Java五子棋小游戏

devtools/2024/10/21 7:14:21/

这个代码是简单的五子棋代码,下一个是进阶版的,可以看看,从简单开始上手

第一步:创建项目

  1. 打开你的IDE(如Eclipse、IntelliJ IDEA等)。
  2. 创建一个新的Java项目。
  3. 在项目中创建一个新的Java类,命名为 Gomoku

第二步:定义棋盘和游戏状态

我们首先需要定义棋盘的大小,以及用于表示空位、黑棋和白棋的常量。然后,我们需要一个二维数组来存储棋盘的状态。

java">public class Gomoku {private static final int BOARD_SIZE = 15; // 棋盘大小private static final char EMPTY = ' '; // 空位private static final char BLACK = 'X'; // 黑棋private static final char WHITE = 'O'; // 白棋private char[][] board; // 棋盘private boolean isBlackTurn; // 当前是黑棋还是白棋public Gomoku() {board = new char[BOARD_SIZE][BOARD_SIZE];clearBoard();isBlackTurn = true; // 游戏开始时黑棋先手}private void clearBoard() {for (int i = 0; i < BOARD_SIZE; i++) {for (int j = 0; j < BOARD_SIZE; j++) {board[i][j] = EMPTY;}}}public static void main(String[] args) {Gomoku game = new Gomoku();game.startGame();}public void startGame() {while (true) {printBoard();System.out.println((isBlackTurn ? "黑棋" : "白棋") + "请下棋 (输入格式: 行 列): ");makeMove(readMove());if (checkWin()) {printBoard();System.out.println((isBlackTurn ? "黑棋" : "白棋") + " 获胜!");break;}isBlackTurn = !isBlackTurn; // 切换玩家}}private int[] readMove() {Scanner scanner = new Scanner(System.in);int row = scanner.nextInt();int col = scanner.nextInt();return new int[]{row, col};}private void makeMove(int[] move) {int row = move[0];int col = move[1];if (board[row][col] != EMPTY) {System.out.println("该位置已有棋子,请重新选择!");return;}board[row][col] = isBlackTurn ? BLACK : WHITE;}private boolean checkWin() {for (int i = 0; i < BOARD_SIZE; i++) {for (int j = 0; j < BOARD_SIZE; j++) {if (board[i][j] != EMPTY && checkDirection(i, j, 1, 0) || // 水平方向checkDirection(i, j, 0, 1) || // 垂直方向checkDirection(i, j, 1, 1) || // 右斜方向checkDirection(i, j, 1, -1))  // 左斜方向{return true;}}}return false;}private boolean checkDirection(int row, int col, int dr, int dc) {char color = board[row][col];int count = 1;for (int i = 1; i < 5; i++) {int r = row + dr * i;int c = col + dc * i;if (r < 0 || r >= BOARD_SIZE || c < 0 || c >= BOARD_SIZE || board[r][c] != color) {break;}count++;}for (int i = 1; i < 5; i++) {int r = row - dr * i;int c = col - dc * i;if (r < 0 || r >= BOARD_SIZE || c < 0 || c >= BOARD_SIZE || board[r][c] != color) {break;}count++;}return count >= 5;}private void printBoard() {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();}}
}

解释代码

  • Gomoku 类:这是游戏的主要类,包含了棋盘的初始化、游戏的开始、棋子的放置、胜负的判断等方法。
  • startGame 方法:游戏的主循环,不断提示玩家下棋,直到有一方获胜。
  • readMove 方法:读取玩家的输入,返回一个包含行和列的数组。
  • makeMove 方法:根据玩家的输入在棋盘上放置棋子。
  • checkWin 方法:检查是否有玩家获胜,通过四个方向(水平、垂直、两个对角线)来检查。
  • printBoard 方法:打印当前的棋盘状态到控制台。

如何运行

  1. 将上述代码复制到你的 Gomoku.java 文件中。
  2. 编译并运行 Gomoku 类。
  3. 按照提示在控制台中输入行和列来下棋。

这就是一个非常基础的五子棋游戏。你可以在此基础上添加更多的功能,比如输入验证、更友好的用户界面等。希望这能帮助你入门Java编程!


http://www.ppmy.cn/devtools/127502.html

相关文章

TypeScript中 interface接口 type关键字 enum枚举类型

type interface总是傻傻分不清~~~ Type Aliases (type) type 关键字用于为类型定义一个别名。这可以是基本类型、联合类型、元组、数组、函数等。type 定义的类型在编译后的 JavaScript 代码中会被移除&#xff0c;不会留下任何运行时的代码。 //联合类型 type StringOrNumbe…

4、.Net 快速开发框架:DncZeus - 开源项目研究文章

DncZeus 是一个基于 ASP.NET Core 和 Vue.js 的前后端分离的通用后台管理系统框架&#xff0c;其愿景是成为一个易于使用且功能丰富的 .NET Core 通用后台权限管理模板系统基础框架。项目名称 "DncZeus" 由 "Dnc"(.NET Core 的缩写)和 "Zeus"(古…

scratch机器人捡垃圾 2024年9月scratch二级真题 中国电子学会 图形化编程 scratch二级真题和答案解析

目录 scratch机器人捡垃圾 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 …

jmeter是怎么用的,怎么设计接口测试用例的

如何使用&#xff1a; Apache JMeter 是一款广泛使用的开源性能测试工具&#xff0c;用于对各种服务&#xff08;如 Web 应用、数据库、FTP、WEB 服务等&#xff09;进行负载测试和性能测试。以下是如何使用 JMeter 的基本步骤。 1. 安装 JMeter 下载 JMeter&#xff1a;访问…

百度SEO前10关键词排名波动跟用户行为反馈有很大关系

大家好&#xff0c;我是林汉文&#xff08;谷歌SEO专家&#xff09;&#xff0c;在百度SEO优化中&#xff0c;网站的排名并非一成不变&#xff0c;尤其是前10名的位置&#xff0c;更是动态变化。很多站长可能会发现&#xff0c;有时明明内容质量不错&#xff0c;外链也稳定&…

IDEA中的快捷键大全--超详细

目录 一、通用类型 1.1 图示 1.2 表格化 二、编写速度提升 2.1 图示 2.1.1 表格化 2.2 图示 2.2.1 表格化: 三、类结构,查找和查看源码 3.1 图示 3.2 表格化 四、查找,替换和关闭 4.1图示 4.2 表格化 五、调整格式 5.1 图示 5.2 表格化 六、快捷键的自主定义…

水题四道。

我的 水题四道--题目目录 问题 A: 依次输出第k小整数 代码1 问题 B: 第k小整数(knumber) 代码2 树的统计 代码3 枪声问题 代码4 问题 A: 依次输出第k小整数 现有n个正整数&#xff0c;n≤10000&#xff0c;要求出这n个正整数中的第1小的整数&#xff0c;第2小的整数&#xf…

yolov8实例分隔

1.查看显卡型号 2.在https://en.wikipedia.org/wiki/CUDA上查看显卡算力&#xff0c;这里显卡为1650&#xff0c;算力为7.5 3.查看显卡算力对应的cuda版本 4slurm上该怎么办&#xff1f; 查看slurm上计算节点cuda版本 查看cuda版本 srun -A 2022099 -J job1 -p Gnode --…