我正在尝试制作一个非常简单的Tic-Tac-Toe游戏.我在0-8 ArrayList(基本上是3x3平方)中存储了"X"和"O"的值.我可以为获胜情况的每个实例执行以下操作:
if ((newBoard().get(0)).equals("X") &&
(newBoard().get(1)).equals("X") &&
(newBoard().get(2)).equals("X")){
System.out.println("Player-X has won!");
return true;
Run Code Online (Sandbox Code Playgroud)
但是,这将需要TON代码!我想创建新的ArrayLists,其中包含"X"赢得(3-in-roe)然后复制和粘贴的情况,将"X"替换为"O",然后将这些与当前用户的ArrayList板进行比较是'与...互动' 这一切都很好,但我不知道如何比较它们.我查看了API,但是我找不到任何可以做我想要的东西,这是与ArrayLists比较,但仅针对指定的索引.
任何与使这种情况变得更小,代码方面有关的事情都将非常感激.谢谢!
嗯,一个选择是不要考虑所有获胜的板,而是所有获胜的所需位置.例如:
private static final int[][] LINES_OF_THREE = {
{ 0, 1, 2 }, // Horizontals
{ 3, 4, 5 },
{ 6, 7, 8 },
{ 0, 3, 6 }, // Verticals
{ 1, 4, 7 },
{ 2, 5, 8 },
{ 0, 4, 8 }, // Diagonals
{ 6, 4, 2 }
};
Run Code Online (Sandbox Code Playgroud)
然后像:
for (int[] line : LINES_OF_THREE) {
boolean won = true;
for (int place : line) {
// player = "O" or "X"
if (!newBoard.get(place).equals(player)) {
won = false;
break;
}
}
if (won) {
// Yippee!
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2723 次 |
最近记录: |