java实现井字棋游戏代码示例
时间: 2023-08-15 16:06:22 浏览: 49
以下是一个简单的 Java 代码示例,实现了一个基本的井字棋游戏。该游戏由两个玩家轮流下棋,直到有一个玩家获胜或者棋盘被填满。
```java
import java.util.Scanner;
public class TicTacToe {
private static char[][] board = new char[3][3]; // 棋盘
private static char currentPlayer = 'X'; // 当前玩家
// 初始化棋盘
private static void initBoard() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
board[i][j] = '-';
}
}
}
// 打印棋盘
private static void printBoard() {
System.out.println("-------------");
for (int i = 0; i < 3; i++) {
System.out.print("| ");
for (int j = 0; j < 3; j++) {
System.out.print(board[i][j] + " | ");
}
System.out.println();
System.out.println("-------------");
}
}
// 切换玩家
private static void switchPlayer() {
if (currentPlayer == 'X') {
currentPlayer = 'O';
} else {
currentPlayer = 'X';
}
}
// 下棋
private static void makeMove() {
Scanner scanner = new Scanner(System.in);
System.out.println("当前玩家:" + currentPlayer);
System.out.print("请输入行号(0-2):");
int row = scanner.nextInt();
System.out.print("请输入列号(0-2):");
int col = scanner.nextInt();
if (board[row][col] == '-') {
board[row][col] = currentPlayer;
} else {
System.out.println("该位置已经被占用,请重新输入。");
makeMove();
}
}
// 判断是否有玩家获胜
private static boolean checkForWin() {
// 判断每一行是否相同
for (int i = 0; i < 3; i++) {
if (board[i][0] != '-' && board[i][0] == board[i][1] && board[i][1] == board[i][2]) {
return true;
}
}
// 判断每一列是否相同
for (int j = 0; j < 3; j++) {
if (board[0][j] != '-' && board[0][j] == board[1][j] && board[1][j] == board[2][j]) {
return true;
}
}
// 判断两个对角线是否相同
if (board[0][0] != '-' && board[0][0] == board[1][1] && board[1][1] == board[2][2]) {
return true;
}
if (board[0][2] != '-' && board[0][2] == board[1][1] && board[1][1] == board[2][0]) {
return true;
}
return false;
}
public static void main(String[] args) {
initBoard();
printBoard();
while (!checkForWin() && !isBoardFull()) {
makeMove();
printBoard();
switchPlayer();
}
if (checkForWin()) {
System.out.println("恭喜玩家 " + currentPlayer + " 获胜!");
} else {
System.out.println("平局!");
}
}
// 判断棋盘是否已经填满
private static boolean isBoardFull() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j] == '-') {
return false;
}
}
}
return true;
}
}
```
请注意,此代码示例仅用于演示用途,可能需要进一步优化以适应实际情况。