繁体   English   中英

在二维数组中递增 object

[英]incrementing an object in a 2d array

美好的一天,所以我打算让我的代码循环遍历我的数组并将 object 的行索引递增 1 position。我使用计时器任务是因为我希望 object 在一定时间后向前移动。 这是我试过的代码。 我已经看过,但我一直在努力寻找与我的问题相关的解决方案。 非常感谢您的帮助。

class cat_function extends TimerTask {
    public void run() {
        synchronized (game.board) {
            for (int i = 0; i < game.board.length; i++) {
                for (int k = 0; k < game.board[0].length; k++) {
                    if (game.board[i][k] instanceof cat) {
                        cat garfield = new cat(0, 0);
                        game.board[i][k] = garfield;
                        game.board[i][k + 1] = garfield;
                    }
                }
            }
        }
    }
}

假设:

  • game.board被定义为Cat[][]
  • 空单元格的值为null

那么你所要做的就是

                if (game.board[i][k] instanceof cat) {
                    game.board[i][k + 1] = game.board[i][k];  // Put cat in new location
                    game.board[i][k] = null;                  // Remove cat from previous location
                }

但是这段代码还有两个问题

  1. 当你到达棋盘边缘时你会做什么。 你必须添加逻辑来让它做一些不同的事情,这样你就不会掉到边缘。
  2. 无需每次都扫描整个游戏板来找到猫。 将猫的位置(索引)分开保存,这样您就可以始终知道它在哪里,而不必寻找它。
  3. 如果棋盘上可以有不止一只猫,你还需要逻辑来决定如果两只猫在移动时“碰撞”会发生什么(即你试图将一只猫移到已经包含一只猫的单元格中)。

解决这些问题留给您作为练习。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM