我写了一个Android应用程序。它是旧棋盘游戏Connect 4的简单版本。目前我的“Board”对象包含已经放在棋盘上的计数器。这个游戏有2个玩家。
Board类由7个ArrayList对象组成,每个对象代表一个板上的一列(该板是x 6向上的7)。因此,例如当红色玩家点击屏幕上的第三列时,我会调用
boardObj.addCounter("red", column);
并且在addCounter()函数中的board对象内部,它执行类似
的操作column3.add(playerColor);
所以ArrayList column3会添加另一个项目等等。
我的问题是 - 是否有更好的数据结构我可以使用而不是使用7个ArrayLists?我注意到,在计数器被添加到电路板之后,检查是否存在获胜的功能在CPU方面变得非常昂贵。什么结构允许我获取和设置数据并以最佳性能运行我的checkwin()算法?
答案 0 :(得分:2)
你有一个7x6的电路板,你需要测试同一行,列或对角线上的元素。
二维数组是最明显的选择。我会用那个。