java井字棋小游戏代码
时间: 2023-07-09 13:33:21 浏览: 69
以下是一个简单的 Java 井字棋小游戏代码示例:
```java
import java.util.Scanner;
public class TicTacToeGame {
// 棋盘数组
private static char[][] board = new char[3][3];
// 当前玩家
private static char currentPlayer = 'X';
public static void main(String[] args) {
initializeBoard();
displayBoard();
playGame();
}
// 初始化棋盘
private static void initializeBoard() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
board[i][j] = '-';
}
}
}
// 显示棋盘
private static void displayBoard() {
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 playGame() {
boolean gameFinished = false;
while (!gameFinished) {
System.out.println("当前玩家:" + currentPlayer);
int row = getRow();
int column = getColumn();
if (board[row][column] != '-') {
System.out.println("该位置已被占用,请重新输入!");
continue;
}
board[row][column] = currentPlayer;
displayBoard();
if (checkWin()) {
System.out.println("玩家 " + currentPlayer + " 获胜!");
gameFinished = true;
} else if (checkTie()) {
System.out.println("平局!");
gameFinished = true;
} else {
currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
}
}
}
// 获取行数
private static int getRow() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入行数(0-2):");
int row = scanner.nextInt();
while (row < 0 || row > 2) {
System.out.println("无效的输入,请重新输入!");
System.out.print("请输入行数(0-2):");
row = scanner.nextInt();
}
return row;
}
// 获取列数
private static int getColumn() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入列数(0-2):");
int column = scanner.nextInt();
while (column < 0 || column > 2) {
System.out.println("无效的输入,请重新输入!");
System.out.print("请输入列数(0-2):");
column = scanner.nextInt();
}
return column;
}
// 检查是否获胜
private static boolean checkWin() {
// 检查行
for (int i = 0; i < 3; i++) {
if (board[i][0] == currentPlayer && board[i][1] == currentPlayer && board[i][2] == currentPlayer) {
return true;
}
}
// 检查列
for (int j = 0; j < 3; j++) {
if (board[0][j] == currentPlayer && board[1][j] == currentPlayer && board[2][j] == currentPlayer) {
return true;
}
}
// 检查对角线
if (board[0][0] == currentPlayer && board[1][1] == currentPlayer && board[2][2] == currentPlayer) {
return true;
}
if (board[0][2] == currentPlayer && board[1][1] == currentPlayer && board[2][0] == currentPlayer) {
return true;
}
return false;
}
// 检查是否平局
private static boolean checkTie() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j] == '-') {
return false;
}
}
}
return true;
}
}
```
该代码使用一个二维字符数组 `board` 来存储棋盘,`X` 和 `O` 分别代表两个玩家。`initializeBoard` 方法用于初始化棋盘,`displayBoard` 方法用于显示当前棋盘状态,`playGame` 方法用于处理游戏逻辑,`getRow` 和 `getColumn` 方法用于获取玩家输入的行数和列数,`checkWin` 方法用于检查是否有玩家获胜,`checkTie` 方法用于检查是否平局。