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