Java ArrayList Comparison- TicTacToe

Mr_*_*ime 3 java arraylist

我正在尝试制作一个非常简单的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比较,但仅针对指定的索引.

任何与使这种情况变得更小,代码方面有关的事情都将非常感激.谢谢!

Jon*_*eet 7

嗯,一个选择是不要考虑所有获胜的,而是所有获胜的所需位置.例如:

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)