首先,我们需要创建一个表示网格的二维数组,以及两个变量来存储当前玩家的符号和游戏的状态。我们还需要一个常量来表示空格,以便我们知道哪些位置是可以落子的。
// 创建一个 3x3 的二维数组 char[][] grid = new char[3][3];
// 定义一个常量表示空格 final char EMPTY = ' ';
// 初始化网格为全空 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { grid[i][j] = EMPTY; } }
// 定义一个变量表示当前玩家的符号,初始为 X char player = 'X';
// 定义一个变量表示游戏的状态,初始为进行中 boolean playing = true;
|
接下来,我们需要定义一个方法来打印网格,以便我们可以看到游戏的进展。我们可以使用 System.out.println() 方法来输出每一行,用竖线分隔每个格子,用横线分隔每一行。
void printGrid() {
for (int i = 0; i < 3; i++) {
System.out.print(grid[i][0]);
System.out.print("|" + grid[i][1]);
System.out.print("|" + grid[i][2]);
System.out.println();
if (i < 2) { System.out.println("-----"); } } }
|
然后,我们需要定义一个方法来获取用户的输入,即他们想要落子的位置。我们可以使用 Scanner 类来读取用户在控制台输入的数字,并检查它们是否有效。有效的输入应该是一个介于 1 到 9 的整数,对应于网格的九个位置,从左上角开始按行编号。如果输入无效,我们应该提示用户重新输入。
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
int getInput() {
int input = -1;
boolean valid = false;
while (!valid) {
System.out.println("请输入一个数字(1-9):");
try { input = scanner.nextInt();
if (input >= 1 && input <= 9) {
int row = (input - 1) / 3; int col = (input - 1) % 3; if (grid[row][col] == EMPTY) {
valid = true; } else {
|