Java实现简单井字棋
时间: 2023-11-27 15:21:20 浏览: 38
好的,以下是一个简单的Java井字棋游戏实现:
```java
import java.util.Scanner;
public class TicTacToe {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[][] board = new char[3][3];
boolean player1 = true;
int row, col;
char symbol;
// 初始化游戏面板
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
board[i][j] = '-';
}
}
// 游戏循环
while (true) {
// 打印游戏面板
printBoard(board);
// 确定当前玩家和他的符号
if (player1) {
symbol = 'X';
} else {
symbol = 'O';
}
// 玩家输入坐标
System.out.print("Player " + symbol + ", enter row (0-2): ");
row = scanner.nextInt();
System.out.print("Player " + symbol + ", enter column (0-2): ");
col = scanner.nextInt();
// 检查坐标是否有效
if (row < 0 || row > 2 || col < 0 || col > 2) {
System.out.println("Invalid input, try again.");
continue;
}
// 检查坐标是否已经被占用
if (board[row][col] != '-') {
System.out.println("This cell is already occupied, try again.");
continue;
}
// 将玩家的符号放入游戏面板
board[row][col] = symbol;
// 检查是否有玩家获胜
if (checkWin(board)) {
printBoard(board);
System.out.println("Player " + symbol + " wins!");
break;
}
// 检查是否平局
if (checkTie(board)) {
printBoard(board);
System.out.println("It's a tie!");
break;
}
// 切换玩家
player1 = !player1;
}
scanner.close();
}
// 打印游戏面板
private static void printBoard(char[][] board) {
System.out.println(" 0 1 2");
for (int i = 0; i < 3; i++) {
System.out.print(i + " ");
for (int j = 0; j < 3; j++) {
System.out.print(board[i][j] + " ");
}
System.out.println();
}
}
// 检查是否有玩家获胜
private static boolean checkWin(char[][] board) {
// 检查行
for (int i = 0; i < 3; i++) {
if (board[i][0] != '-' && board[i][0] == board[i][1] && board[i][0] == board[i][2]) {
return true;
}
}
// 检查列
for (int i = 0; i < 3; i++) {
if (board[0][i] != '-' && board[0][i] == board[1][i] && board[0][i] == board[2][i]) {
return true;
}
}
// 检查对角线
if (board[0][0] != '-' && board[0][0] == board[1][1] && board[0][0] == board[2][2]) {
return true;
}
if (board[0][2] != '-' && board[0][2] == board[1][1] && board[0][2] == board[2][0]) {
return true;
}
// 没有获胜
return false;
}
// 检查是否平局
private static boolean checkTie(char[][] board) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j] == '-') {
return false;
}
}
}
return true;
}
}
```
以上代码实现了一个简单的井字棋游戏,玩家可以通过控制台输入坐标来下棋,程序会检查输入的坐标是否合法,并且检查是否有玩家获胜或者平局。