五子棋java代码
时间: 2023-07-02 15:22:22 浏览: 63
以下是一个简单的五子棋Java代码示例:
```java
import java.util.Scanner;
public class Gomoku {
private static int size = 15; // 棋盘大小
private static char[][] board = new char[size][size]; // 棋盘
private static char player1 = 'X'; // 玩家1棋子
private static char player2 = 'O'; // 玩家2棋子
private static int turn = 0; // 轮到哪个玩家
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
initBoard(); // 初始化棋盘
printBoard(); // 打印棋盘
while (true) {
int x = getPlayerInput("x"); // 获取玩家输入的x坐标
int y = getPlayerInput("y"); // 获取玩家输入的y坐标
// 验证输入是否合法
if (x < 0 || x >= size || y < 0 || y >= size) {
System.out.println("坐标无效,请重新输入!");
continue;
}
if (board[x][y] != 0) {
System.out.println("该位置已经有棋子了,请重新输入!");
continue;
}
// 在棋盘上放置棋子
board[x][y] = turn == 0 ? player1 : player2;
printBoard(); // 打印棋盘
if (checkWin(x, y)) { // 检查是否胜利
System.out.println("玩家 " + (turn == 0 ? "1" : "2") + " 胜利!");
break;
}
turn = turn == 0 ? 1 : 0; // 切换玩家
}
}
// 初始化棋盘
private static void initBoard() {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
board[i][j] = 0;
}
}
}
// 打印棋盘
private static void printBoard() {
System.out.print(" ");
for (int i = 0; i < size; i++) {
System.out.print(i + 1);
}
System.out.println();
for (int i = 0; i < size; i++) {
System.out.print(i + 1);
for (int j = 0; j < size; j++) {
System.out.print(board[i][j]);
}
System.out.println();
}
}
// 获取玩家输入的坐标
private static int getPlayerInput(String coordinate) {
System.out.print("玩家 " + (turn == 0 ? "1" : "2") + ",请输入" + coordinate + "坐标(1-" + size + "):");
return scanner.nextInt() - 1;
}
// 检查是否胜利
private static boolean checkWin(int x, int y) {
char player = turn == 0 ? player1 : player2;
// 检查横向
int count = 0;
for (int i = 0; i < size; i++) {
if (board[i][y] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
// 检查纵向
count = 0;
for (int i = 0; i < size; i++) {
if (board[x][i] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
// 检查左上到右下斜线
count = 0;
for (int i = x, j = y; i >= 0 && j >= 0; i--, j--) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
break;
}
}
for (int i = x + 1, j = y + 1; i < size && j < size; i++, j++) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
break;
}
}
// 检查左下到右上斜线
count = 0;
for (int i = x, j = y; i >= 0 && j < size; i--, j++) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
break;
}
}
for (int i = x + 1, j = y - 1; i < size && j >= 0; i++, j--) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
break;
}
}
return false;
}
}
```
这个五子棋代码实现了一个简单的控制台版游戏,玩家可以通过输入坐标来下棋,当有一方连成五个棋子时游戏结束。