java五子棋
时间: 2023-08-10 22:06:03 浏览: 40
好的,下面是一个简单的 Java 五子棋游戏示例代码,供您参考:
```java
import java.util.Scanner;
public class Gobang {
private int[][] board; // 棋盘
private int player; // 玩家
private int computer; // 电脑
private int turn; // 轮到谁下棋了
private int empty; // 空位数量
public Gobang() {
board = new int[15][15];
player = 1;
computer = 2;
turn = player;
empty = 15 * 15;
}
public void play() {
while (empty > 0) {
if (turn == player) {
playerMove();
} else {
computerMove();
}
printBoard();
if (checkWin()) {
System.out.println(turn == player ? "You win!" : "Computer win!");
break;
}
turn = turn == player ? computer : player;
}
if (empty == 0) {
System.out.println("Tie!");
}
}
private void playerMove() {
Scanner scanner = new Scanner(System.in);
int row, col;
do {
System.out.println("Your turn (row[1-15] col[1-15]):");
row = scanner.nextInt();
col = scanner.nextInt();
} while (!isValidMove(row - 1, col - 1));
board[row - 1][col - 1] = turn;
empty--;
}
private void computerMove() {
int row, col;
do {
row = (int) (Math.random() * 15);
col = (int) (Math.random() * 15);
} while (!isValidMove(row, col));
board[row][col] = turn;
empty--;
}
private boolean isValidMove(int row, int col) {
if (row < 0 || row >= 15 || col < 0 || col >= 15) {
return false;
}
if (board[row][col] != 0) {
return false;
}
return true;
}
private boolean checkWin() {
// 检查行
for (int row = 0; row < 15; row++) {
for (int col = 0; col <= 10; col++) {
if (board[row][col] != 0 && board[row][col] == board[row][col + 1] && board[row][col] == board[row][col + 2]
&& board[row][col] == board[row][col + 3] && board[row][col] == board[row][col + 4]) {
return true;
}
}
}
// 检查列
for (int col = 0; col < 15; col++) {
for (int row = 0; row <= 10; row++) {
if (board[row][col] != 0 && board[row][col] == board[row + 1][col] && board[row][col] == board[row + 2][col]
&& board[row][col] == board[row + 3][col] && board[row][col] == board[row + 4][col]) {
return true;
}
}
}
// 检查正斜线
for (int row = 0; row <= 10; row++) {
for (int col = 0; col <= 10; col++) {
if (board[row][col] != 0 && board[row][col] == board[row + 1][col + 1] && board[row][col] == board[row + 2][col + 2]
&& board[row][col] == board[row + 3][col + 3] && board[row][col] == board[row + 4][col + 4]) {
return true;
}
}
}
// 检查反斜线
for (int row = 0; row <= 10; row++) {
for (int col = 4; col < 15; col++) {
if (board[row][col] != 0 && board[row][col] == board[row + 1][col - 1] && board[row][col] == board[row + 2][col - 2]
&& board[row][col] == board[row + 3][col - 3] && board[row][col] == board[row + 4][col - 4]) {
return true;
}
}
}
return false;
}
private void printBoard() {
System.out.println(" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15");
for (int row = 0; row < 15; row++) {
System.out.print((row + 1) + " ");
for (int col = 0; col < 15; col++) {
if (board[row][col] == 0) {
System.out.print("+ ");
} else if (board[row][col] == 1) {
System.out.print("X ");
} else {
System.out.print("O ");
}
}
System.out.println();
}
}
public static void main(String[] args) {
Gobang game = new Gobang();
game.play();
}
}
```
注意:这只是一个简单的示例代码,可能存在一些问题和不足,具体实现需要根据需求进行调整和优化。