吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3923|回复: 12
收起左侧

[Java 原创] 【JAVA】第一次发帖,分享下自己多年前写的桌面小游戏,也可让刚入门Java的借鉴

  [复制链接]
lsy_loren 发表于 2022-9-3 11:45
本帖最后由 lsy_loren 于 2022-9-3 13:58 编辑

源码地址:https://gitee.com/lsy_loren/loren-tetris.git

程序截图:

1

1

2

2



因为第一次发帖,不太知道要注意啥,版规说要贴源码。那就贴一下消行的处理吧。

[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private int removeLine() {
        Block[][] gameMap = this.gameData.getGameMap();
        // 存储需要消除行的Y坐标
        List<Integer> removeYList = new ArrayList<>();
        for (int y = 0; y < gameMap[0].length; y++) {
            boolean remove = true;
            for (Block[] blocks : gameMap) {
                if (blocks[y] == null || !blocks[y].isFrozen()) {
                    remove = false;
                    break;
                }
            }
            if (remove) {
                removeYList.add(y);
            }
        }
        int removeLineCount = removeYList.size();
        if (removeLineCount > 0) {
            if (DataConstant.ENABLE_TWINKLE) { // 消行闪烁
                this.removeLineTwinkle(gameMap, removeYList);
            }
            for (Integer count : removeYList) {
                for (int y = count; y >= 0; y--) {
                    for (int x = 0; x < gameMap.length; x++) {
                        if (y - 1 >= 0) {
                            gameMap[x][y] = gameMap[x][y - 1];
                        } else {
                            gameMap[x][y] = null;
                        }
                    }
                }
            }
        }
        return removeLineCount;
    }




[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
/**
     * 消行闪烁
     */
    private void removeLineTwinkle(Block[][] gameMap, List<Integer> removeYList) {
        for (int count = 0; count < DataConstant.REMOVE_LINE_TWINKLE_COUNT; count++) { // 使要消除的行闪烁
            for (int y : removeYList) {
                for (int x = 0; x < gameMap.length; x++) {
                    gameMap[x][y] = (count % 2 == 0) ? null : Block.blockFrozen(x, y);
                }
            }
            // repaint不会立即重绘,有个延时的过程,所以要用paintImmediately立即重绘
            this.gamePanel.paintImmediately(0, 0, this.gamePanel.getWidth(), this.gamePanel.getHeight());
            try {
                TimeUnit.MILLISECONDS.sleep(DataConstant.REMOVE_LINE_TWINKLE_TIME);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

免费评分

参与人数 4威望 +1 吾爱币 +17 热心值 +3 收起 理由
CarlosTo2023 + 1 + 1 这个游戏看起来对入门来说挺实用的
weakUp1 + 1 谢谢@Thanks!
zwhy211 + 1 我很赞同!
苏紫方璇 + 1 + 15 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| lsy_loren 发表于 2022-11-22 16:37
二十瞬 发表于 2022-11-22 00:21
感觉很多年前 我在贴吧看到有个老哥出了一个 俄罗斯方块的教程视频 和你这个做出来的风格很像啊。

翼神吗?我也看到那个帖子,这个游戏布局就是仿照他的。
二十瞬 发表于 2022-11-22 16:40
lsy_loren 发表于 2022-11-22 16:37
翼神吗?我也看到那个帖子,这个游戏布局就是仿照他的。

哈哈  忘记了  太久了
helloworld2022 发表于 2022-9-3 14:27
hxd97244 发表于 2022-9-3 19:14
很老的游戏啊
ccc007 发表于 2022-9-4 16:19
自制俄罗斯方块
曙光牛 发表于 2022-11-19 10:16
正好现在大三正在学习JAVA  不过现在还没有学完基础,先收藏了- -
dadaliya 发表于 2022-11-20 11:26
值得借鉴,感谢大佬
二十瞬 发表于 2022-11-22 00:21
感觉很多年前 我在贴吧看到有个老哥出了一个 俄罗斯方块的教程视频 和你这个做出来的风格很像啊。  
YouMingChen 发表于 2022-11-23 09:03
这个做了多久,Java图形化好像挺复杂的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-23 17:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表