如何使X和O的替代

时间:2016-02-26 20:01:20

标签: java

我试图在每次转弯之后使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");
        }
    }
}

4 个答案:

答案 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”。