用java写一个五子棋
时间: 2024-01-08 16:49:37 浏览: 70
好的,以下是一个简单的五子棋 Java 代码示例。
```java
import java.util.Scanner;
public class Gobang {
public static void main(String[] args) {
// 初始化棋盘二维数组
int[][] chessboard = new int[15][15];
// 初始化玩家
int player = 1;
// 初始化输入对象
Scanner input = new Scanner(System.in);
// 初始化棋子坐标
int x, y;
// 游戏循环
while (true) {
// 打印当前棋盘状态
printChessboard(chessboard);
// 获取当前玩家输入的坐标
System.out.print("玩家" + player + "落子,请输入横坐标和纵坐标(用空格分隔):");
x = input.nextInt();
y = input.nextInt();
// 判断输入的坐标是否合法
if (x < 0 || x >= 15 || y < 0 || y >= 15) {
System.out.println("坐标不合法,请重新输入!");
continue;
}
if (chessboard[x][y] != 0) {
System.out.println("该位置已有棋子,请重新输入!");
continue;
}
// 在棋盘上落子
chessboard[x][y] = player;
// 判断游戏是否结束
if (isGameOver(chessboard, x, y)) {
System.out.println("玩家" + player + "获胜!");
break;
}
// 切换玩家
player = 3 - player;
}
}
/**
* 打印棋盘状态
*/
public static void printChessboard(int[][] chessboard) {
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
System.out.print(chessboard[i][j] + " ");
}
System.out.println();
}
}
/**
* 判断当前局面是否有胜者
*/
public static boolean isGameOver(int[][] chessboard, int x, int y) {
int player = chessboard[x][y];
// 检查行
int count = 1;
for (int i = x - 1; i >= 0; i--) {
if (chessboard[i][y] == player) {
count++;
} else {
break;
}
}
for (int i = x + 1; i < 15; i++) {
if (chessboard[i][y] == player) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
// 检查列
count = 1;
for (int i = y - 1; i >= 0; i--) {
if (chessboard[x][i] == player) {
count++;
} else {
break;
}
}
for (int i = y + 1; i < 15; i++) {
if (chessboard[x][i] == player) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
// 检查左上到右下的斜线
count = 1;
for (int i = x - 1, j = y - 1; i >= 0 && j >= 0; i--, j--) {
if (chessboard[i][j] == player) {
count++;
} else {
break;
}
}
for (int i = x + 1, j = y + 1; i < 15 && j < 15; i++, j++) {
if (chessboard[i][j] == player) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
// 检查左下到右上的斜线
count = 1;
for (int i = x - 1, j = y + 1; i >= 0 && j < 15; i--, j++) {
if (chessboard[i][j] == player) {
count++;
} else {
break;
}
}
for (int i = x + 1, j = y - 1; i < 15 && j >= 0; i++, j--) {
if (chessboard[i][j] == player) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
return false;
}
}
```
这个五子棋游戏使用的是控制台输入和输出,棋盘大小为 15x15。玩家落子时输入坐标,程序会检查坐标是否合法,如果合法则在棋盘上落子。每次落子后,程序会判断当前局面是否有胜者,如果有,则游戏结束。
阅读全文