Java五子棋代码
五子棋是一种古老而受欢迎的棋类游戏,它的规则简单而富有挑战性。在这篇文章中,我将为大家介绍一份用Java语言编写的五子棋代码。
首先,让我们来了解一下五子棋的规则。五子棋是在一个×的棋盘上进行的,两名玩家轮流在棋盘上落子,目标是先在横、竖、斜线上连成五个自己的棋子。如果棋盘上所有位置都被填满,且没有任何一方连成五个棋子,那么游戏宣布为平局。
接下来,我将为大家展示一份用Java编写的五子棋代码。首先,我们需要创建一个名为Gobang的类,用于表示五子棋游戏。
```java
import java.util.Scanner;
public class Gobang {
private char[][] board;
private char currentPlayer;
public Gobang() {
board = new char[][];
currentPlayer = &;X&;;
initializeBoard();
}
private void initializeBoard() {
for (int i = 0; i < ; i++) {
for (int j = 0; j < ; j++) {
board[i][j] = &;-&;;
}
}
}
public void playGame() {
boolean gameOver = false;
Scanner scanner = new Scanner(System.in);
while (!gameOver) {
System.out.println("当前玩家:" + currentPlayer);
System.out.print("请输入落子位置(格式:行 列):");
int row = scanner.nextInt();
int col = scanner.nextInt();
if (isValidMove(row, col)) {
board[row][col] = currentPlayer;
printBoard();
if (isWinningMove(row, col)) {
System.out.println("玩家 " + currentPlayer + " 获胜!");
gameOver = true;
} else if (isBoardFull()) {
System.out.println("平局!");
gameOver = true;
} else {
currentPlayer = (currentPlayer == &;X&;) ? &;O&; : &;X&;;
}
} else {
System.out.println("无效的落子位置,请重新输入!");
}
}
scanner.close();
}
private boolean isValidMove(int row, int col) {
return row >= 0 && row < && col >= 0 && col < && board[row][col] == &;-&;;
}
private boolean isWinningMove(int row, int col) {
// 检查横向是否连成五个
int count = 0;
for (int i = Math.max(0, col - ); i <= Math.min(, col + ); i++) {
if (board[row][i] == currentPlayer) {
count++;
if (count == ) return true;
} else {
count = 0;
}
}
// 检查纵向是否连成五个
count = 0;
for (int i = Math.max(0, row - ); i <= Math.min(, row + ); i++) {
if (board[i][col] == currentPlayer) {
count++;
if (count == ) return true;
} else {
count = 0;
}
}
// 检查右上斜线是否连成五个
count = 0;
for (int i = -; i <= ; i++) {
int r = row + i;
int c = col - i;
if (r >= 0 && r < && c >= 0 && c < ) {
if (board[r][c] == currentPlayer) {
count++;
if (count == ) return true;
} else {
count = 0;
}
}
}
// 检查右下斜线是否连成五个
count = 0;
for (int i = -; i <= ; i++) {
int r = row - i;
int c = col - i;
if (r >= 0 && r < && c >= 0 && c < ) {
if (board[r][c] == currentPlayer) {
count++;
if (count == ) return true;
} else {
count = 0;
}
}
}
return false;
}
private boolean isBoardFull() {
for (int i = 0; i < ; i++) {
for (int j = 0; j < ; j++) {
if (board[i][j] == &;-&;) return false;
}
}
return true;
}
private void printBoard() {
for (int i = 0; i < ; i++) {
for (int j = 0; j < ; j++) {
System.out.print(board[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] args) {
Gobang game = new Gobang();
game.playGame();
}
}
```
以上就是用Java语言编写的五子棋代码。通过这份代码,我们可以实现一个简单而又有趣的五子棋游戏。玩家可以轮流输入落子位置,程序会自动判断是否获胜或者平局,并在控制台上打印出当前棋盘状态。
希望这份代码能够帮助到对Java编程和五子棋游戏感兴趣的读者。如果你有任何问题或建议,请随时留言。祝你玩得愉快!