java五子棋代码简单
时间: 2025-01-09 17:24:15 浏览: 2
### 实现五子棋游戏的简单Java代码
为了创建一个简单的五子棋(Gomoku)游戏,在Java中可以定义基本的游戏逻辑,包括初始化棋盘、玩家轮流下棋以及判断胜负条件。
#### 初始化棋盘
通过二维数组表示棋盘状态。`0`代表空白位置;`1`和`2`分别代表两个不同玩家放置的棋子[^1]。
```java
public class Gomoku {
private static final int SIZE = 15;
private int[][] board;
public Gomoku() {
this.board = new int[SIZE][SIZE];
initializeBoard();
}
private void initializeBoard() {
for (int i = 0; i < SIZE; ++i) {
Arrays.fill(board[i], 0);
}
}
}
```
#### 下棋操作
提供方法让指定坐标处放下某一方的棋子,并更新内部存储的状态矩阵[^1]。
```java
public boolean placeStone(int row, int col, int player) {
if (!isValidMove(row, col)) return false;
board[row][col] = player;
return true;
}
private boolean isValidMove(int row, int col) {
return row >= 0 && row < SIZE &&
col >= 0 && col < SIZE &&
board[row][col] == 0;
}
```
#### 判断胜利情况
遍历整个棋盘来查找是否存在连续五个相同颜色的棋子排列,无论是横向、纵向还是斜向都算作获胜情形之一[^1]。
```java
public boolean checkWin(int lastRow, int lastCol, int currentPlayer) {
// Check horizontal, vertical and diagonal directions.
int[] dx = {0, 1, 1, -1};
int[] dy = {1, 0, 1, 1};
for (int dir = 0; dir < 4; ++dir) {
int count = 1;
// Count forward direction
for (int step = 1; ; ++step) {
int nx = lastRow + step * dx[dir];
int ny = lastCol + step * dy[dir];
if (!(nx >= 0 && nx < SIZE && ny >= 0 && ny < SIZE))
break;
if (board[nx][ny] != currentPlayer)
break;
++count;
}
// Count backward direction
for (int step = 1; ; ++step) {
int nx = lastRow - step * dx[dir];
int ny = lastCol - step * dy[dir];
if (!(nx >= 0 && nx < SIZE && ny >= 0 && ny < SIZE))
break;
if (board[nx][ny] != currentPlayer)
break;
++count;
}
if (count >= 5) return true;
}
return false;
}
```
阅读全文