五子棋游戏,游戏开始要求:输出以下棋盘,然后提示黑方和白方下子,玩家从命令行输入:af,表示在af坐标落子,其中黑方的子用@表示,白方子用O表示,每一方有一方落子,则要重新输出棋盘的状态,程序还要求能判断某一方获胜并终止程序。五子棋获胜条件:4个方向(上下,左右,左上右下,右上左下)判断是否满足5个棋子都是一样的棋子。 用Java写
时间: 2023-08-09 11:11:22 浏览: 93
java写的五子棋游戏,两人对战形式,可判断胜负
5星 · 资源好评率100%
好的,以下是我用 Java 写的五子棋游戏代码,希望能帮到你。
```java
import java.util.Scanner;
public class Gobang {
// 棋盘大小
private static final int BOARD_SIZE = 15;
// 棋盘数组,用来存储棋子的位置
private static String[][] board = new String[BOARD_SIZE][BOARD_SIZE];
// 当前下棋方,true表示黑方,false表示白方
private static boolean isBlack = true;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 初始化棋盘
initBoard();
// 开始游戏
while (true) {
// 输出棋盘
printBoard();
// 提示当前下棋方
if (isBlack) {
System.out.print("黑方");
} else {
System.out.print("白方");
}
System.out.print("请下棋(如a3):");
// 获取玩家输入的下棋位置
String input = scanner.next();
int x = input.charAt(0) - 'a';
int y = input.charAt(1) - '1';
// 判断输入是否合法
if (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE) {
System.out.println("输入不合法,请重新输入!");
continue;
}
if (!board[x][y].equals("+")) {
System.out.println("此位置已经有棋子,请重新输入!");
continue;
}
// 在棋盘上落子
if (isBlack) {
board[x][y] = "@";
} else {
board[x][y] = "O";
}
// 判断是否获胜
if (checkWin(x, y)) {
printBoard();
if (isBlack) {
System.out.println("黑方获胜!");
} else {
System.out.println("白方获胜!");
}
break;
}
// 切换下棋方
isBlack = !isBlack;
}
scanner.close();
}
// 初始化棋盘
private static void initBoard() {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
board[i][j] = "+";
}
}
}
// 输出棋盘
private static void printBoard() {
System.out.print(" ");
for (int i = 0; i < BOARD_SIZE; i++) {
System.out.print((char) ('a' + i) + " ");
}
System.out.println();
for (int i = 0; i < BOARD_SIZE; i++) {
System.out.print((i + 1) + " ");
for (int j = 0; j < BOARD_SIZE; j++) {
System.out.print(board[j][i] + " ");
}
System.out.println(i + 1);
}
System.out.print(" ");
for (int i = 0; i < BOARD_SIZE; i++) {
System.out.print((char) ('a' + i) + " ");
}
System.out.println();
}
// 判断是否获胜
private static boolean checkWin(int x, int y) {
String piece = isBlack ? "@" : "O";
// 判断上下方向
int count = 1;
for (int i = y - 1; i >= 0; i--) {
if (board[x][i].equals(piece)) {
count++;
} else {
break;
}
}
for (int i = y + 1; i < BOARD_SIZE; i++) {
if (board[x][i].equals(piece)) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
// 判断左右方向
count = 1;
for (int i = x - 1; i >= 0; i--) {
if (board[i][y].equals(piece)) {
count++;
} else {
break;
}
}
for (int i = x + 1; i < BOARD_SIZE; i++) {
if (board[i][y].equals(piece)) {
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 (board[i][j].equals(piece)) {
count++;
} else {
break;
}
}
for (int i = x + 1, j = y + 1; i < BOARD_SIZE && j < BOARD_SIZE; i++, j++) {
if (board[i][j].equals(piece)) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
// 判断右上左下方向
count = 1;
for (int i = x + 1, j = y - 1; i < BOARD_SIZE && j >= 0; i++, j--) {
if (board[i][j].equals(piece)) {
count++;
} else {
break;
}
}
for (int i = x - 1, j = y + 1; i >= 0 && j < BOARD_SIZE; i--, j++) {
if (board[i][j].equals(piece)) {
count++;
} else {
break;
}
}
if (count >= 5) {
return true;
}
return false;
}
}
```
阅读全文