java简易五子棋代码
时间: 2023-07-09 09:45:47 浏览: 53
以下是一个简易的 Java 五子棋代码,实现了基本的落子、胜负判断和重新开始等功能:
```java
import java.util.Scanner;
public class Gobang {
private static final int ROWS = 15; // 棋盘行数
private static final int COLS = 15; // 棋盘列数
private static final int WIN_COUNT = 5; // 获胜所需连续棋子数
private static char[][] board = new char[ROWS][COLS]; // 棋盘数组
private static Scanner scanner = new Scanner(System.in); // 读取用户输入的 Scanner
// 初始化棋盘
private static void initBoard() {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
board[i][j] = '+';
}
}
}
// 打印棋盘
private static void printBoard() {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
System.out.print(board[i][j] + " ");
}
System.out.println();
}
}
// 判断是否获胜
private static boolean isWin(char player) {
// 水平方向
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j <= COLS - WIN_COUNT; j++) {
boolean flag = true;
for (int k = j; k < j + WIN_COUNT; k++) {
if (board[i][k] != player) {
flag = false;
break;
}
}
if (flag) {
return true;
}
}
}
// 竖直方向
for (int i = 0; i <= ROWS - WIN_COUNT; i++) {
for (int j = 0; j < COLS; j++) {
boolean flag = true;
for (int k = i; k < i + WIN_COUNT; k++) {
if (board[k][j] != player) {
flag = false;
break;
}
}
if (flag) {
return true;
}
}
}
// 左上到右下斜方向
for (int i = 0; i <= ROWS - WIN_COUNT; i++) {
for (int j = 0; j <= COLS - WIN_COUNT; j++) {
boolean flag = true;
for (int k = 0; k < WIN_COUNT; k++) {
if (board[i + k][j + k] != player) {
flag = false;
break;
}
}
if (flag) {
return true;
}
}
}
// 右上到左下斜方向
for (int i = 0; i <= ROWS - WIN_COUNT; i++) {
for (int j = WIN_COUNT - 1; j < COLS; j++) {
boolean flag = true;
for (int k = 0; k < WIN_COUNT; k++) {
if (board[i + k][j - k] != player) {
flag = false;
break;
}
}
if (flag) {
return true;
}
}
}
return false;
}
public static void main(String[] args) {
initBoard(); // 初始化棋盘
char currentPlayer = 'X'; // 当前玩家(X 或 O)
printBoard(); // 打印棋盘
while (true) {
System.out.print("请输入 " + currentPlayer + " 的落子位置(如:5,7):");
String input = scanner.nextLine();
int row = Integer.parseInt(input.split(",")[0]) - 1;
int col = Integer.parseInt(input.split(",")[1]) - 1;
if (board[row][col] != '+') {
System.out.println("此位置已经有棋子,请重新输入!");
continue;
}
board[row][col] = currentPlayer;
printBoard();
if (isWin(currentPlayer)) {
System.out.println(currentPlayer + " 获胜!");
break;
}
if (currentPlayer == 'X') {
currentPlayer = 'O';
} else {
currentPlayer = 'X';
}
}
scanner.close();
}
}
```
注意:此代码为简易版五子棋,仅供学习参考,实际应用中还需要考虑更多的细节和异常情况。