专业的JAVA编程教程与资源

网站首页 > java教程 正文

java实现2048小游戏(java实现2048小游戏破解版)

temp10 2024-09-03 21:59:34 java教程 20 ℃ 0 评论

直接看效果:


java实现2048小游戏(java实现2048小游戏破解版)


主要难点就在于执行上下左右的逻辑:

 /*向上操作*/
    public void pushUp() {
        System.out.println("push up........");
        for (int y = 0; y < 4; y++) {
            for (int x = 1; x < 4; x++) {/*从第二行开始*/
                int flag = 0;//判断标志
                if (gameBoard[x][y] != 0) {
                    int value = gameBoard[x][y];
                    int X = x - 1;/*X为前一行*/
                    while ((X >= 0) && gameBoard[X][y] == 0) {
                        X--;
                        flag = 1;
                    }
                    if (X == -1) {/*前面所有行都为0,直接赋值给第一行*/
                        gameBoard[0][y] = value;
                        gameBoard[x][y] = 0;
                    } else if (gameBoard[X][y] != value) {/*flag为0,证明前一行不都为0,并且与该行值不相等,不做操作*/
                        if (flag == 1) {/*中间有1或2行空行,因此将该行的下一行赋值为value*/
                            gameBoard[X + 1][y] = value;
                            gameBoard[x][y] = 0;
                        }
                    } else if(gameBoard[X][y]==gameBoard[x][y]){
                        gameBoard[X][y] *= 2;
                        gameBoard[x][y] = 0;
                        score+=gameBoard[X][y];
                    }
                }
            }
        }
    }
 /*向下操作*/
    public void pushDown() {
        System.out.println("push down........");
        for (int y = 0; y < 4; y++) {
            for (int x = 2; x > -1; x--) {/*第3行开始*/
                int flag = 0;//判断标志
                if (gameBoard[x][y] != 0) {
                    int value = gameBoard[x][y];
                    int X = x + 1;/*X为下一行*/
                    while ((X <= 3) && gameBoard[X][y] == 0) {
                        X++;
                        flag = 1;
                    }
                    if (X == 4) {/*第4行都为0,将value赋值第4行*/
                        gameBoard[3][y] = value;
                        gameBoard[x][y] = 0;
                    } else if (gameBoard[X][y] != value) {/*下一行不等于value,flag为0,不做操作*/
                        if (flag == 1) {
                            gameBoard[X - 1][y] = value;/*flag为一,中间有空行,让它上一行为value*/
                            gameBoard[x][y] = 0;
                        }
                    } else if(gameBoard[X][y]==gameBoard[x][y]){

                        gameBoard[X][y] *= 2;
                        gameBoard[x][y] = 0;
                        score+=gameBoard[X][y];
                    }
                }
            }
        }
    }
  /*向右操作*/
    public void pushRight() {
        System.out.println("push right........");
        for (int x = 0; x < 4; x++) {
            for (int y = 2; y > -1; y--) {/*第3列开始*/
                int flag = 0;//判断标志
                if (gameBoard[x][y] != 0) {
                    int value = gameBoard[x][y];
                    int Y = y + 1;/*右边的一列*/
                    while ((Y <= 3) && gameBoard[x][Y] == 0) {
                        Y++;
                        flag = 1;
                    }
                    if (Y == 4) {/*最右一列为0*/
                        gameBoard[x][3] = value;
                        gameBoard[x][y] = 0;
                    } else if (gameBoard[x][Y] != value) {/*右边的列与该值不相等,flag为0,不操作*/
                        if (flag == 1) {/*flag为1,中有空列,让该列左边一列为该值*/
                            gameBoard[x][Y - 1] = value;
                            gameBoard[x][y] = 0;
                        }
                    } else if(gameBoard[x][Y]==gameBoard[x][y]){

                        gameBoard[x][Y] *= 2;
                        gameBoard[x][y] = 0;
                        score+=gameBoard[x][Y];
                    }
                }
            }
        }
    }
 public void pushLeft() {
        System.out.println("push left........");
        for (int x = 0; x < 4; x++) {
            for (int y = 1; y < 4; y++) {/*第2列开始*/
                int flag = 0;//判断标志
                if (gameBoard[x][y] != 0) {
                    int value = gameBoard[x][y];
                    int Y = y - 1;/*为左边一列*/
                    while ((Y >= 0) && gameBoard[x][Y] == 0) {
                        Y--;
                        flag = 1;
                    }
                    if (Y == -1) {
                        gameBoard[x][0] = value;
                        gameBoard[x][y] = 0;/*第一列为0*/
                    } else if (gameBoard[x][Y] != value) {/*与前一列不相等,flag为0,不操作*/
                        if (flag == 1) {/*flag=1,中间有空列,让它右边一列为该值*/
                            gameBoard[x][Y + 1] = value;
                            gameBoard[x][y] = 0;
                        }
                    } else if(gameBoard[x][Y]==gameBoard[x][y]){
                        gameBoard[x][Y] *= 2;
                        gameBoard[x][y] = 0;
                        score+=gameBoard[x][Y];
                    }
                }
            }
        }
    }

要源码的同学,评论区留言。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表