Java:五子棋游戏代码
时间: 2023-07-09 18:31:25 浏览: 65
以下是一个简单的五子棋游戏的 Java 代码:
```java
import java.util.Scanner;
public class FiveInARow {
private static final int ROWS = 15;
private static final int COLS = 15;
private static final int EMPTY = 0;
private static final int PLAYER1 = 1;
private static final int PLAYER2 = 2;
private static int[][] board = new int[ROWS][COLS];
public static void main(String[] args) {
int player = PLAYER1;
Scanner scanner = new Scanner(System.in);
while (true) {
printBoard();
System.out.print("Player " + player + ", enter row and column (e.g. 3 5): ");
int row = scanner.nextInt();
int col = scanner.nextInt();
if (makeMove(row, col, player)) {
System.out.println("Player " + player + " wins!");
printBoard();
break;
}
player = (player == PLAYER1) ? PLAYER2 : PLAYER1;
}
scanner.close();
}
private static boolean makeMove(int row, int col, int player) {
board[row][col] = player;
int count = 1;
// check horizontal
for (int c = col - 1; c >= 0 && board[row][c] == player; c--)
count++;
for (int c = col + 1; c < COLS && board[row][c] == player; c++)
count++;
if (count >= 5)
return true;
// check vertical
count = 1;
for (int r = row - 1; r >= 0 && board[r][col] == player; r--)
count++;
for (int r = row + 1; r < ROWS && board[r][col] == player; r++)
count++;
if (count >= 5)
return true;
// check diagonal (top-left to bottom-right)
count = 1;
for (int r = row - 1, c = col - 1; r >= 0 && c >= 0 && board[r][c] == player; r--, c--)
count++;
for (int r = row + 1, c = col + 1; r < ROWS && c < COLS && board[r][c] == player; r++, c++)
count++;
if (count >= 5)
return true;
// check diagonal (bottom-left to top-right)
count = 1;
for (int r = row + 1, c = col - 1; r < ROWS && c >= 0 && board[r][c] == player; r++, c--)
count++;
for (int r = row - 1, c = col + 1; r >= 0 && c < COLS && board[r][c] == player; r--, c++)
count++;
if (count >= 5)
return true;
return false;
}
private static void printBoard() {
for (int r = 0; r < ROWS; r++) {
for (int c = 0; c < COLS; c++) {
if (board[r][c] == EMPTY)
System.out.print(".");
else if (board[r][c] == PLAYER1)
System.out.print("X");
else if (board[r][c] == PLAYER2)
System.out.print("O");
}
System.out.println();
}
}
}
```
这个程序使用一个二维数组 `board` 来存储棋盘上的状态,使用常量 `EMPTY`、`PLAYER1`、`PLAYER2` 来表示空、玩家1、玩家2的棋子。`makeMove` 方法用来检查每一个新落子是否构成五子连珠,使用四个循环分别检查水平、竖直、左上到右下和右上到左下方向上的连珠情况。`printBoard` 方法用来打印当前的棋盘状态。程序使用一个 `while` 循环来不断交替让两个玩家下棋,直到某一方获胜。