用Java写一个五子棋游戏
时间: 2023-05-18 21:04:14 浏览: 64
好的,以下是一个简单的五子棋游戏的 Java 代码:
```
import java.util.Scanner;
public class Gomoku {
private static final int BOARD_SIZE = 15;
private static final char EMPTY = '-';
private static final char BLACK = 'X';
private static final char WHITE = 'O';
private static char[][] board = new char[BOARD_SIZE][BOARD_SIZE];
private static boolean isBlackTurn = true;
public static void main(String[] args) {
initializeBoard();
printBoard();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("请输入您要下的位置,格式为x,y:");
String input = scanner.nextLine();
String[] parts = input.split(",");
int x = Integer.parseInt(parts[0]);
int y = Integer.parseInt(parts[1]);
if (isValidMove(x, y)) {
makeMove(x, y);
printBoard();
if (hasWon(x, y)) {
System.out.println("游戏结束," + (isBlackTurn ? "黑方" : "白方") + "获胜!");
break;
}
isBlackTurn = !isBlackTurn;
} else {
System.out.println("无效的位置,请重新输入。");
}
}
}
private static void initializeBoard() {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
board[i][j] = EMPTY;
}
}
}
private static void printBoard() {
System.out.print(" ");
for (int i = 0; i < BOARD_SIZE; i++) {
System.out.print(i + " ");
}
System.out.println();
for (int i = 0; i < BOARD_SIZE; i++) {
System.out.print(i + " ");
for (int j = 0; j < BOARD_SIZE; j++) {
System.out.print(board[i][j] + " ");
}
System.out.println();
}
}
private static boolean isValidMove(int x, int y) {
return x >= 0 && x < BOARD_SIZE && y >= 0 && y < BOARD_SIZE && board[x][y] == EMPTY;
}
private static void makeMove(int x, int y) {
board[x][y] = isBlackTurn ? BLACK : WHITE;
}
private static boolean hasWon(int x, int y) {
char player = isBlackTurn ? BLACK : WHITE;
int count = 0;
// 横向
for (int i = Math.max(0, x - 4); i <= Math.min(BOARD_SIZE - 1, x + 4); i++) {
if (board[i][y] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
// 纵向
count = 0;
for (int j = Math.max(0, y - 4); j <= Math.min(BOARD_SIZE - 1, y + 4); j++) {
if (board[x][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
// 左上到右下
count = 0;
for (int i = Math.max(0, x - 4), j = Math.max(0, y - 4); i <= Math.min(BOARD_SIZE - 1, x + 4) && j <= Math.min(BOARD_SIZE - 1, y + 4); i++, j++) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
// 左下到右上
count = 0;
for (int i = Math.max(0, x - 4), j = Math.min(BOARD_SIZE - 1, y + 4); i <= Math.min(BOARD_SIZE - 1, x + 4) && j >= Math.max(0, y - 4); i++, j--) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
return false;
}
}
```
希望这个代码能够帮助你实现一个简单的五子棋游戏。