Tic-Tac-Toe 问题描述 创建一个 TicTacToe 类,用于 Tic-Tac-Toe 游戏。 (1)用图形用户界面来实现 ,界面形式不要求必须按着此页面,可以自己定义。(如果做不出来图例的样子,可以做出如下图的田字格形式界面,x和o可以用1和0数值代替。) (2)该类包含一个 3×3 的二维整型数组,其访问类型为 private (3)定义一个构造函数,用来将该数组初始化为 0 (4)允许 2 个玩家,当第 1 个玩家选定一个位置后,在该位置摆放一个值; 当第 2 个玩家选定一个位置后,在该位置摆放一个值; 两者不一样,以示区别。 (5)在每一步后,判断游戏是否结束,是否出现赢家 (6)可选题:如果有时间,可以实现人-机对弈,即游戏的另一方为电脑 程序。 要求: (1) 编写测试类 Test: 其中 args[0]包含输入的字符串,输入字符串格式示例为 : (1,1)(2,2)(3,3) 表示如下的 落子顺序: 输出结果为 true 或者 false,true 代表按照规定的落子顺序比赛结束,false 代表 比赛没有结束。可以通过命令行运行 java Test "(1,2)(3,3)(1,1)(2,2)" 测试程序。 (2) 如果实现人机对弈,将人机对弈实现在 AI 类中。 注:主类名为 ColorWord。 要Java代码实现
时间: 2024-03-23 22:39:41 浏览: 83
Tic-Tac-Toe:用Java编写的Digital Tic Tac Toe游戏
以下是 TicTacToe 类和测试类 Test 的代码实现:
TicTacToe 类:
```java
import java.util.Arrays;
public class TicTacToe {
private int[][] board;
public TicTacToe() {
board = new int[3][3];
}
public boolean move(int player, int row, int col) {
if (board[row][col] != 0) {
return false;
}
board[row][col] = player;
return true;
}
public boolean isGameOver() {
// Check rows
for (int i = 0; i < 3; i++) {
if (board[i][0] != 0 && board[i][0] == board[i][1] && board[i][1] == board[i][2]) {
return true;
}
}
// Check columns
for (int i = 0; i < 3; i++) {
if (board[0][i] != 0 && board[0][i] == board[1][i] && board[1][i] == board[2][i]) {
return true;
}
}
// Check diagonals
if (board[0][0] != 0 && board[0][0] == board[1][1] && board[1][1] == board[2][2]) {
return true;
}
if (board[0][2] != 0 && board[0][2] == board[1][1] && board[1][1] == board[2][0]) {
return true;
}
// Check if board is full
for (int[] row : board) {
for (int cell : row) {
if (cell == 0) {
return false;
}
}
}
return true;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (int[] row : board) {
for (int cell : row) {
sb.append(cell == 0 ? " " : cell == 1 ? "X" : "O").append("|");
}
sb.deleteCharAt(sb.length() - 1).append("\n");
}
return sb.toString();
}
}
```
Test 类:
```java
public class Test {
public static void main(String[] args) {
TicTacToe game = new TicTacToe();
int player = 1;
String[] moves = args[0].split("\\)\\(");
for (String move : moves) {
int row = Integer.parseInt(move.substring(1, 2)) - 1;
int col = Integer.parseInt(move.substring(3, 4)) - 1;
if (!game.move(player, row, col)) {
System.out.println("Invalid move: " + move);
return;
}
System.out.println(game);
if (game.isGameOver()) {
System.out.println("Game over!");
return;
}
player = player == 1 ? 2 : 1;
}
System.out.println("Game not over yet.");
}
}
```
此代码实现了 Tic-Tac-Toe 游戏,并提供了一个测试类 Test,可以通过命令行运行 java Test "(1,2)(3,3)(1,1)(2,2)" 测试程序。
阅读全文