Java实现简单五子棋游戏:含代码与获胜判断逻辑
以下是一个简单的五子棋游戏的Java代码实现: ```java import java.util.Scanner; public class Gomoku { private static final int BOARD_SIZE = 15; private static final char EMPTY = '.'; private static final char PLAYER1 = 'X'; private static final char PLAYER2 = 'O'; public static void main(String[] args) { char[][] board = new char[BOARD_SIZE][BOARD_SIZE]; initBoard(board); printBoard(board); Scanner scanner = new Scanner(System.in); boolean player1Turn = true; while (true) { System.out.println("轮到玩家" + (player1Turn ? "1" : "2") + ",请输入行和列(用空格隔开):"); int row = scanner.nextInt(); int col = scanner.nextInt(); if (row < 0 || row >= BOARD_SIZE || col < 0 || col >= BOARD_SIZE || board[row][col] != EMPTY) { System.out.println("无效的输入,请重新输入。"); continue; } board[row][col] = player1Turn ? PLAYER1 : PLAYER2; printBoard(board); if (checkWin(board, row, col)) { System.out.println("玩家" + (player1Turn ? "1" : "2") + "获胜!"); break; } player1Turn = !player1Turn; } scanner.close(); } private static void initBoard(char[][] board) { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { board[i][j] = EMPTY; } } } private static void printBoard(char[][] board) { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { System.out.print(board[i][j] + " "); } System.out.println(); } } private static boolean checkWin(char[][] board, int row, int col) { char player = board[row][col]; int count; // 检查行 count = 0; for (int i = 0; i < BOARD_SIZE; i++) { if (board[row][i] == player) { count++; if (count == 5) return true; } else { count = 0; } } // 检查列 count = 0; for (int i = 0; i < BOARD_SIZE; i++) { if (board[i][col] == player) { count++; if (count == 5) return true; } else { count = 0; } } // 检查主对角线 count = 0; for (int i = row - Math.min(row, col), j = col - Math.min(row, col); i < BOARD_SIZE && j < BOARD_SIZE; i++, j++) { if (board[i][j] == player) { count++; if (count == 5) return true; } else { count = 0; } } // 检查副对角线 count = 0; for (int i = row - Math.min(row, BOARD_SIZE - col - 1), j = col + Math.min(row, BOARD_SIZE - col - 1); i < BOARD_SIZE && j >= 0; i++, j--) { if (board[i][j] == player) { count++; if (count == 5) return true; } else { count = 0; } } return false; } } ``` 这个代码实现了一个简单的五子棋游戏,玩家可以在控制台输入行和列坐标来下棋。游戏会检查每次下棋后是否有一方获胜,如果有一方获胜则输出获胜信息并结束游戏。 ######[AI写代码神器 | 1089点数解答 | 2024-07-15 17:52:36]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)429
- 超燃年会来袭!诗舞歌戏轮番上阵,共赴欢乐盛宴! (字节豆包 | 206点数解答 | 2025-01-08 10:59:43)361
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)330
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1217
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)371
- JS 代码:判断“red”改值为“green”并弹窗显示结果( | 176点数解答 | 2024-05-20 21:33:04)431
- 用 JS 代码巧妙判断 a 与 b 关系:输出对应结果 ( | 47点数解答 | 2024-05-20 22:10:14)339
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)342
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)339
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)493
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)378
- 探秘各类游戏:多样玩法带来不同乐趣!(字节豆包 | 77点数解答 | 2025-05-04 01:10:38)188