我试图在每次转弯之后使X和O交替,就像在正常的tic tac toe游戏中一样,但是当我运行它时,所发生的一切就是它在每次转弯后都会继续输出X.为什么会这样?
import java.util.Scanner;
public class TicTacToe{
public static void main(String[] args){
Scanner reader = new Scanner(System.in);
Scanner numreader = new Scanner(System.in);
TicTacToeBoard board = new TicTacToeBoard(620,720);
board.setFiles("X.png", "O.jpeg");
int[][] lines = new int[4][4];
lines[0][0] = 0;
lines[0][1] = 200;
lines[0][2] = 600;
lines[0][3] = 200;
lines[1][0] = 0;
lines[1][1] = 400;
lines[1][2] = 800;
lines[1][3] = 400;
lines[2][0] = 200;
lines[2][1] = 600;
lines[2][2] = 200;
lines[2][3] = 0;
lines[3][0] = 400;
lines[3][1] = 600;
lines[3][2] = 400;
lines[3][3] = 0;
board.defineBoard(lines);
int counter = 0;
char[][] arr= {
{'-','-','-'},
{'-','-','-'},
{'-','-','-'},
};
board.setBoard(arr);
int a = 0;
for(int i = 0; i<9; i++){
System.out.println("Enter what row:");
int y = numreader.nextInt();
System.out.println("Enter what column:");
int z = numreader.nextInt();
if(arr[y][z]=='-'){
arr[y][z]='x';
board.setBoard(arr);
board.repaint();
counter ++;}
else
System.out.println("This is not allowed");
}
}
}
答案 0 :(得分:2)
您的代码似乎明确将磁贴设置为x
。
arr[y][z]='x';
我怀疑你会想要像
这样的东西arr[y][z]= counter % 2 == 0 ? 'x' : 'o';
另外,请注意。无论输入是否有效,您都将在“输入行/列”代码上迭代9次。这意味着如果您输入无效的行/列组合,您最终将获得8转游戏。
答案 1 :(得分:0)
您总是使用'x'更改:
arr[y][z]='x'
你可以这样做:
if(arr[y][z]=='-'){
if (counter % 2 == 0) arr[y][z]='x';
else arr[y][z]='o';
board.setBoard(arr);
board.repaint();
counter ++;
}
当计数器为偶数时,您将更改为“x”。当奇怪的时候,你会变成'o'。
答案 2 :(得分:0)
尝试实施类似以下内容而不是arr[y][z]='x';
行:
if (counter % 2 == 0)
arr[y][z]='x';
else
arr[y][z]='o';
所以它会根据counter
值进行交替(即,如果计数器是偶数,那么它是&#39; x&#39; s&#39; s&#39; s&#39; O&amp;#39)
我希望有帮助
答案 3 :(得分:0)
因为您始终将其设置为“x”:arr[y][z]='x';
。您需要具有将此值替换为“x”和“o”的条件。类似于您在每次迭代时设置和重置的标志,以确定您是否需要“x”或“o”。