黑白棋 Java 实现320


黑白棋,又称奥赛罗棋,是一款两人对弈的策略棋盘游戏。棋盘为 8x8 的格子,玩家使用黑色和白色的棋子进行对弈。游戏目标是通过翻转对手的棋子来占据更多的格子,拥有更多棋子的玩家获胜。

游戏规则

黑白棋的规则如下:* 游戏在 8x8 的棋盘上进行。
* 玩家轮流放置自己的棋子在空闲的格子上。
* 棋子可以放置在任何空位上,但必须遵循以下规则:
* 新放置的棋子必须与对手至少一枚棋子的水平、垂直或对角线上有一个或多个相邻的对手棋子。
* 如果放置棋子后,可以将对手的一条或多条线上的棋子夹在中间,则这些棋子将被翻转为玩家的棋子。
* 如果玩家不能放置棋子,则轮到对手下棋。
* 当棋盘上没有空位或两名玩家都无法下棋时,游戏结束。

Java 实现

以下是用 Java 实现黑白棋的代码片段:```java
import ;
public class Othello {
private static final int BOARD_SIZE = 8;
private static final char BLACK = 'B';
private static final char WHITE = 'W';
private static final char EMPTY = ' ';
private char[][] board;
private boolean blackTurn;
public Othello() {
board = new char[BOARD_SIZE][BOARD_SIZE];
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
board[i][j] = EMPTY;
}
}
board[3][3] = BLACK;
board[3][4] = WHITE;
board[4][3] = WHITE;
board[4][4] = BLACK;
blackTurn = true;
}
public void play() {
Scanner scanner = new Scanner();
while (!isGameOver()) {
displayBoard();
if (blackTurn) {
("黑方回合:");
} else {
("白方回合:");
}
int row = ();
int col = ();
if (isValidMove(row, col)) {
placePiece(row, col);
blackTurn = !blackTurn;
} else {
("非法移动,请重新输入。");
}
}
displayBoard();
if (getBlackCount() > getWhiteCount()) {
("黑方获胜!");
} else if (getWhiteCount() > getBlackCount()) {
("白方获胜!");
} else {
("平局!");
}
}
private boolean isGameOver() {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
if (board[i][j] == EMPTY) {
return false;
}
}
}
return true;
}
private int getBlackCount() {
int count = 0;
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
if (board[i][j] == BLACK) {
count++;
}
}
}
return count;
}
private int getWhiteCount() {
int count = 0;
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
if (board[i][j] == WHITE) {
count++;
}
}
}
return count;
}
private void displayBoard() {
(" 1 2 3 4 5 6 7 8");
for (int i = 0; i < BOARD_SIZE; i++) {
((i + 1) + " ");
for (int j = 0; j < BOARD_SIZE; j++) {
(board[i][j] + " ");
}
();
}
}
private boolean isValidMove(int row, int col) {
if (row < 0 || row >= BOARD_SIZE || col < 0 || col >= BOARD_SIZE) {
return false;
}
if (board[row][col] != EMPTY) {
return false;
}
char opponentColor = blackTurn ? WHITE : BLACK;
for (int i = -1; i = 0 && y < BOARD_SIZE && board[x][y] == opponentColor) {
x += i;
y += j;
}
if (x >= 0 && x < BOARD_SIZE && y >= 0 && y < BOARD_SIZE && board[x][y] == blackTurn ? BLACK : WHITE) {
return true;
}
}
}
return false;
}
private void placePiece(int row, int col) {
board[row][col] = blackTurn ? BLACK : WHITE;
char opponentColor = blackTurn ? WHITE : BLACK;
for (int i = -1; i = 0 && y < BOARD_SIZE && board[x][y] == opponentColor) {
x += i;
y += j;
}
if (x >= 0 && x < BOARD_SIZE && y >= 0 && y < BOARD_SIZE && board[x][y] == blackTurn ? BLACK : WHITE) {
while (true) {
x -= i;
y -= j;
if (x == row && y == col) {
break;
}
board[x][y] = blackTurn ? BLACK : WHITE;
}
}
}
}
}
public static void main(String[] args) {
Othello game = new Othello();
();
}
}
```

运行

要运行黑白棋游戏,请将代码粘贴到 Java 编译器中并运行它。您将看到一个 8x8 的棋盘,其中有四个初始棋子。玩家轮流放置自己的棋子,直到棋盘填满或两名玩家都无法移动为止。游戏结束时,将宣布获胜者或平局。

本教程演示了如何使用 Java 实现黑白棋游戏。提供了代码、规则和运行说明。通过遵循这些步骤,您应该能够构建一个可以与朋友或计算机对手一起玩的黑白棋游戏。

2024-11-20


上一篇:Java 线程:常用方法详解

下一篇:优雅地关闭 Java 窗口:各种方法详解