首页 > 解决方案 > 递增二维数组中的对象

问题描述

美好的一天,所以我打算让我的代码循环遍历我的数组并将对象的行索引增加 1 个位置。我使用计时器任务是因为我希望对象在一定时间后向前移动。这是我尝试过的代码。我看过,但我一直在努力寻找与我的问题相关的解决方案。将不胜感激。

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;
                    }
                }
            }
        }
    }
}

标签: javatimertask

解决方案


假设:

  • 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. 如果板上可能有不止一只猫,您还需要逻辑来决定如果两只猫在移动时“碰撞”会发生什么(即您试图将一只猫移动到已经包含一只猫的单元格)。

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


推荐阅读