请用JAVA代码写一个五子棋游戏
时间: 2023-03-09 13:41:47 浏览: 115
很高兴能帮到你!这里是一个简单的五子棋游戏Java代码示例:public class Gobang {public static void main(String[] args) {int[][] board = new int[15][15];for (int i = 0; i < 15; i++) {for (int j = 0; j < 15; j++) {board[i][j] = 0;}}while (true) {//玩家1落子//玩家2落子//判断是否有人赢}}}
相关问题
用java写一个五子棋游戏代码
以下是一个基本的五子棋游戏代码,仅供参考:
import java.util.Scanner;
public class FiveChess {
public static final int ROWS = 15;
public static final int COLS = 15;
public static final int EMPTY = 0;
public static final int BLACK = 1;
public static final int WHITE = 2;
public static int[][] board = new int[ROWS][COLS];
public static int player = BLACK;
public static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
initBoard();
printBoard();
while (true) {
System.out.print("请输入下棋位置(x,y):");
int x = input.nextInt();
int y = input.nextInt();
if (isValidMove(x, y)) {
board[x][y] = player;
printBoard();
if (isWin(x, y)) {
System.out.println((player == BLACK ? "黑" : "白") + "方获胜!");
break;
}
player = (player == BLACK ? WHITE : BLACK);
} else {
System.out.println("下棋位置不合法,请重新输入!");
}
}
}
public static void initBoard() {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
board[i][j] = EMPTY;
}
}
}
public static void printBoard() {
System.out.print(" ");
for (int i = 0; i < COLS; i++) {
System.out.print(i + " ");
}
System.out.println();
for (int i = 0; i < ROWS; i++) {
System.out.print(i + " ");
for (int j = 0; j < COLS; j++) {
if (board[i][j] == EMPTY) {
System.out.print("+ ");
} else if (board[i][j] == BLACK) {
System.out.print("● ");
} else {
System.out.print("○ ");
}
}
System.out.println();
}
}
public static boolean isValidMove(int x, int y) {
if (x < 0 || x >= ROWS || y < 0 || y >= COLS) {
return false;
}
if (board[x][y] != EMPTY) {
return false;
}
return true;
}
public static boolean isWin(int x, int y) {
int count = 0;
// 横向判断
for (int i = 0; i < COLS; i++) {
if (board[x][i] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
count = 0;
// 纵向判断
for (int i = 0; i < ROWS; i++) {
if (board[i][y] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
count = 0;
// 左上到右下斜线判断
for (int i = x, j = y; i >= 0 && i < ROWS && j >= 0 && j < COLS; i--, j--) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
for (int i = x + 1, j = y + 1; i >= 0 && i < ROWS && j >= 0 && j < COLS; i++, j++) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
count = 0;
// 左下到右上斜线判断
for (int i = x, j = y; i >= 0 && i < ROWS && j >= 0 && j < COLS; i--, j++) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
for (int i = x + 1, j = y - 1; i >= 0 && i < ROWS && j >= 0 && j < COLS; i++, j--) {
if (board[i][j] == player) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
return false;
}
}
用Java写一个五子棋游戏代码
### 回答1:
回答:可以使用Java语言编写五子棋游戏的代码,请参考以下步骤:1. 定义棋盘和棋子的类:定义棋盘的大小,以及每个棋子的位置和颜色。
2. 定义游戏规则:规定谁先走、规定两个玩家走棋的顺序和规则,以及胜负条件。
3. 定义棋子落子函数:定义棋子落子函数,处理玩家落子、判断棋局是否结束等等。
4. 定义获取棋子的函数:获取棋盘上的棋子的位置,以及棋子的颜色。
5. 定义游戏开始函数:定义游戏开始函数,控制游戏的步骤。
6. 定义游戏结束函数:定义游戏结束函数,判断谁赢了游戏。
### 回答2:
五子棋是一种非常经典的策略棋类游戏,玩家通过在棋盘上落子,争夺连成五颗棋子的胜利。下面是使用Java编写的五子棋游戏代码:
首先,首先需要定义一个棋盘类,包含棋盘的大小,棋盘上棋子的类型等信息。可以使用二维数组来表示棋盘,每个位置可以是空,黑子或者白子。
然后,可以定义一个玩家类,包含玩家的姓名、执子颜色等信息。玩家可以输入坐标来落子,程序需要校验合法性,确保玩家落子的位置是空的,并且没有形成禁手。
接下来,需要实现主要的游戏逻辑。可以设计一个游戏控制类,包含开始游戏、落子、判断胜负等方法。在每次落子后,程序需要检查棋盘是否已满或者是否有玩家连成五颗棋子,若有则游戏结束。
最后,可以用一个演示类来运行整个程序。在游戏开始时,会要求玩家输入姓名和选择执子颜色。接下来会交替提示玩家落子,每次落子后显示棋盘状态。当有一方连成五颗棋子时,显示获胜者,并结束游戏。
综上所述,以上是使用Java编写五子棋游戏代码的基本思路。通过合理的类设计和游戏逻辑实现,可以实现一个功能完整的五子棋游戏。当然,还可以根据需求进行优化和扩展,例如添加悔棋、人机对战等功能,增加游戏的趣味性和可玩性。
### 回答3:
下面是用Java写的一个简单的五子棋游戏代码:
```java
import java.util.Scanner;
public class GomokuGame {
public static void main(String[] args) {
// 初始化棋盘
char[][] board = new char[15][15];
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
board[i][j] = '-';
}
}
// 游戏循环
Scanner scanner = new Scanner(System.in);
char player = 'X';
boolean gameOver = false;
while (!gameOver) {
// 输出当前棋盘状态
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
System.out.print(board[i][j]);
}
System.out.println();
}
// 玩家落子
System.out.println("轮到玩家 " + player + " 落子,请输入坐标:");
int row = scanner.nextInt();
int col = scanner.nextInt();
if (row < 0 || row >= 15 || col < 0 || col >= 15 || board[row][col] != '-') {
System.out.println("无效坐标,请重新输入!");
continue;
}
board[row][col] = player;
// 判断是否有玩家获胜
if (checkWin(board, row, col, player)) {
System.out.println("玩家 " + player + " 获胜!");
gameOver = true;
} else {
// 切换玩家
player = (player == 'X') ? 'O' : 'X';
}
}
// 关闭输入流
scanner.close();
}
// 判断是否有玩家获胜
public static boolean checkWin(char[][] board, int row, int col, char player) {
int count = 0;
// 水平方向
for (int i = col - 4; i <= col + 4; i++) {
if (i >= 0 && i + 4 < 15 && board[row][i] == player && board[row][i + 1] == player &&
board[row][i + 2] == player && board[row][i + 3] == player && board[row][i + 4] == player) {
return true;
}
}
// 垂直方向
for (int i = row - 4; i <= row + 4; i++) {
if (i >= 0 && i + 4 < 15 && board[i][col] == player && board[i + 1][col] == player &&
board[i + 2][col] == player && board[i + 3][col] == player && board[i + 4][col] == player) {
return true;
}
}
// 左上到右下斜线方向
for (int i = -4; i <= 4; i++) {
if (row + i >= 0 && row + i + 4 < 15 && col + i >= 0 && col + i + 4 < 15 &&
board[row + i][col + i] == player && board[row + i + 1][col + i + 1] == player &&
board[row + i + 2][col + i + 2] == player && board[row + i + 3][col + i + 3] == player &&
board[row + i + 4][col + i + 4] == player) {
return true;
}
}
// 右上到左下斜线方向
for (int i = -4; i <= 4; i++) {
if (row - i >= 0 && row - i - 4 < 15 && col + i >= 0 && col + i + 4 < 15 &&
board[row - i][col + i] == player && board[row - i - 1][col + i + 1] == player &&
board[row - i - 2][col + i + 2] == player && board[row - i - 3][col + i + 3] == player &&
board[row - i - 4][col + i + 4] == player) {
return true;
}
}
return false;
}
}
```
该代码首先初始化一个15x15大小的棋盘,使用字符数组来表示每个位置的状态。然后进入游戏循环,每次循环输出当前棋盘状态,并提示当前玩家输入坐标进行落子。接着判断该位置是否合法,如果合法则在该位置落子,并判断当前玩家是否获胜。如果有玩家获胜,则输出获胜信息,游戏结束;否则切换玩家。游戏循环直到有玩家获胜为止。
在判断是否有玩家获胜时,该代码采用遍历方式,分为水平、垂直、左上到右下斜线和右上到左下斜线四个方向进行判断。通过统计相邻五个位置中当前玩家的个数来判断是否获胜。如果存在连续五个相同的棋子,则返回true,表示有玩家获胜。
以上就是一个简单的用Java写的五子棋游戏代码。
阅读全文