Java 我如何使这个井字游戏有一个重播选项

Java 我如何使这个井字游戏有一个重播选项,java,Java,我必须为我的班级做一个井字游戏,并且需要在最后实现一个重播功能。我已经从其他网站上列出的帖子中尝试过很多次,但是都没有成功。非常感谢您在游戏结束后输入y时提供有关如何重新启动游戏的任何信息 import java.util.Scanner; public class TicTacToe { char[][] table = new char[3][3]; //make board public void gameStart() { for (int i

我必须为我的班级做一个井字游戏,并且需要在最后实现一个重播功能。我已经从其他网站上列出的帖子中尝试过很多次,但是都没有成功。非常感谢您在游戏结束后输入y时提供有关如何重新启动游戏的任何信息

import java.util.Scanner;

public class TicTacToe 
{

 char[][] table = new char[3][3]; //make board

    public void gameStart() 
    {
        for (int i = 0; i < 3; i++) 
        {
            for (int p = 0; p < 3; p++) 
            {
                table[i][p] = ' ';
            }
        }
    }

    public boolean checkLegal(int row, int column) // as name
    {
        if ((row > 2 || column > 2) || (row < 0 || column < 0)) 

        {
            return true;
        }

        else if (table[row][column] == 'x' || table[row][column] == 'o') 

        {
            return true;
        }
        return false;
    }

    public void changeBoard(char player, int row, int column) 
    {
        table[row][column] = player;

    }

    public void showBoard()  // displays board 
    {
        System.out.println("  0  " + table[0][0] + "|" + table[0][1] + "|" + table[0][2]);
        System.out.println("    --+-+--");
        System.out.println("  1  " + table[1][0] + "|" + table[1][1] + "|" + table[1][2]);
        System.out.println("    --+-+--");
        System.out.println("  2  " + table[2][0] + "|" + table[2][1] + "|" + table[2][2]);
        System.out.println("     0 1 2 ");
    }


    public char changePlayer(char player) 
    {
        char newTurn = 'e';
        if (player == 'o') {
            newTurn = 'x';
        }
        if (player == 'x') {
            newTurn = 'o';
        }
        return newTurn;
    }


    public boolean winChecker() 
    {
        if (table[0][0] == table[1][0] && table[1][0] == table[2][0] && (table[0][0] == 'x' || table[0][0] == 'o')) 

        {
            return true;
        } 

        else if (table[0][1] == table[1][1] && table[1][1] == table[2][1] && (table[0][1] == 'x' || table[0][1] == 'o'))

        {
            return true;
        } 

        else if (table[0][2] == table[1][2] && table[1][2] == table[2][2] && (table[0][2] == 'x' || table[0][2] == 'o')) 

        {
            return true;
        } 

        else if (table[0][0] == table[0][1] && table[0][1] == table[0][2] && (table[0][0] == 'x' || table[0][0] == 'o')) 

        {
            return true;
        } 

        else if (table[1][0] == table[1][1] && table[1][1] == table[1][2] && (table[1][0] == 'x' || table[1][0] == 'o')) 

        {
            return true;
        } 

        else if (table[2][0] == table[2][1] && table[2][1] == table[2][2] && (table[2][0] == 'x' || table[2][0] == 'o')) 

        {
            return true;
        } 

        else if (table[0][0] == table[1][1] && table[1][1] == table[2][2] && (table[0][0] == 'x' || table[0][0] == 'o')) 

        {
            return true;
        } 

        else if (table[2][0] == table[1][1] && table[1][1] == table[0][2] && (table[2][0] == 'x' || table[2][0] == 'o')) 

        {
            return true;
        } 

        else

        {
            return false;
        }
    }

    public boolean tieCheck() 
    {
        for (int i = 0; i < 3; i++) 
        {
            for (int p = 0; p < 3; p++) 
            {
                if (table[i][p] == ' ') 
                {
                    return false;
                }
            }
        }

        return true;
    }


public void replayChoose()
{
          Scanner r = new Scanner(System.in);

    System.out.println("\n Would you like to play again? y/n");

    char replay = r.next().charAt(0);

    if(replay != 'y')
{
    System.exit(0);
}
else
{
    table = new char[3][3];
    gameStart();
}

    public static void main(String[] args) 

    {

        char player = 'o';
        int row, column;
        Scanner k = new Scanner(System.in);
        TicTacToe g = new TicTacToe();

        g.gameStart();
        System.out.println("Game ready !\n");
                g.showBoard();

        while (true)
        {
            player = g.changePlayer(player);
            System.out.print("\n" + player + " ,choose your location enter each seperatly (row, column):");
            row = k.nextInt();
            column = k.nextInt();

            while (g.checkLegal(row, column)) 

            {
                System.out.println("That spot is already taken or does not exist, try again (row, column).");
                g.showBoard();
                row = k.nextInt();
                column = k.nextInt();
            }

            g.changeBoard(player, row, column);
            g.showBoard();

            if (g.winChecker())

            {
                System.out.println("\nThe winner is " + player + " !");
                g.replayChoose();
                break;

            }

            if (g.tieCheck()) 

            {
                System.out.println("\nThe game is a tie !");
                g.replayChoose();

                break;
            }

        }


    }
}

你有没有试过把游戏性放在变量声明之后,等等。你的主循环的一部分在while循环中?大概是这样的:

while (keyEntered != 'y') {
    //gameplay code...
    keyEntered = getPlayAgain();  //ask for user input
}

在游戏重新启动之前,您必须清空所有适当的变量。与表一样,将主方法中的所有内容提取到一个名为game的新方法中。然后从main调用method游戏

完成后,初始化表数组,然后调用方法游戏:

if (replay != 'y') {
    System.exit(0);
} else {
    table = new char[3][3];
    game();
}

所以在声明变量后等待,我将main放入while循环中,但在main的哪个部分它将退出循环?还是整个main都在循环中?分别声明和初始化变量。声明在公共静态void mainString[]args{下的主右下方使用的所有变量,然后在循环内初始化它们。每当循环迭代时,它应该将所有变量重置为原始值,然后开始游戏。@JosephBorowski