【问题标题】:3d ArrayList vs arrayList of stack3d ArrayList vs 堆栈的arrayList
【发布时间】:2014-03-10 21:53:39
【问题描述】:

我正在尝试重新创建一个棋盘游戏。这个棋盘游戏有一个 4x4 维度,可以用 2D 数组列表表示。但是,我遇到的困难是决定什么是实现 4x4 棋盘游戏的最佳方法,其中每行和每列可以容纳 4 个项目(以堆栈的方式,顶部项目是最大的 int)。在这种情况下,堆栈的 2D 数组列表会是最有效的,还是 3D 数组列表是要走的路。同样,我将如何初始化整数的 3D 数组列表?谢谢!

【问题讨论】:

  • 您多久会从板上的单个字段中读取或更改特定值?
  • @EvcanMustafa 好吧,允许玩家放置一个大于原始位置的值。例如,如果 [0][0] 有 2,则另一个人可以将 3 放入该位置。最大插槽数 = 4,最大 int = 4。我还需要返回板上的最高值和值。
  • 为什么董事会需要如此高效。如果玩家玩 - 假设每秒移动一次 - 您不会注意到两种实现之间的差异。然而,由于项目的数量是固定的,一个 3d 数组就足够了

标签: java arraylist


【解决方案1】:

无论哪种方式,效率都会很好,对于你需要对方块做的事情,做最简单的事情。您会通过 X、Y 坐标来引用事物吗?然后你可能只想使用一个二维的瓦片数组,所以你可以将事物引用为

tile = board[x][y]

这假设原点在棋盘的左上角。如果这确实是一个问题,它也非常有效。

【讨论】:

  • 在这个实现中,如果我要在 [0][0] 处添加一个整数,例如 3,然后用 4 替换它,我不需要另一个数组列表来跟踪这两个整数。
  • 为了您自己的理智,只需创建一个可以存储 4 个整数的 Tile 类。如果您开始在数组上超过二维,则很难快速阅读。
【解决方案2】:

您问“...实现 4x4 棋盘游戏的最佳方法是什么...”。但看起来你现在不应该关心实现。听起来您应该关心界面。定义一个精确反映您想要表示的界面:

interface Board {
    int getNumRows();
    int getNumCols();
    int getStackHeight(int r, int c);
    int getStackValue(int r, int c, int h);
 }

如前所述,效率几乎不是问题,如果它成为问题,您可能会很高兴您可以更改实现而不影响游戏中的任何其他内容。

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2019-08-05
    • 2015-07-11
    • 2015-02-14
    • 1970-01-01
    相关资源
    最近更新 更多