当前位置: 首页 > news >正文

五子棋的Java实现


title: Java Swing实现五子棋游戏(人机对战+AI+完整源码)
date: 2026-06-30
categories: Java课程设计
tags: [Java, Swing, 五子棋, AI, 课设]


🎮 Java Swing实现五子棋游戏(人机对战+AI+完整源码)

📌 前言

这是《面向对象程序设计(Java)》课程设计作品,一个基于Java Swing + 2D Graphics的五子棋游戏。支持人人对战人机对战两种模式,AI采用基于棋型评分的启发式搜索算法。

源码地址:https://gitee.com/SparkBool/gobang.git

运行环境:JDK 17+,双击 jar 包即可运行


🛠 技术栈

技术用途
Java Swing图形界面
Java 2D Graphics棋盘与棋子绘制
AI评分算法基于棋型评分的五子棋AI
文件存储比分持久化
MVC架构三层分包设计

🏗 系统架构

五子棋/ └── src/main/java/gobang/ ├── App.java 程序入口 ├── model/ 数据模型层 │ ├── Board.java 棋盘数据(15×15数组) │ └── MoveRecord.java 落子历史记录 ├── service/ 业务逻辑层 │ ├── GameService.java 游戏主逻辑 │ ├── WinChecker.java 胜负判定算法 │ └── AIEvaluator.java 五子棋AI评分算法 └── view/ 界面显示层 ├── MainFrame.java 主窗口(CardLayout) ├── MainMenuPanel.java 主菜单 ├── GamePanel.java 棋盘游戏界面 ├── GameOverPanel.java 游戏结束界面 ├── RulesPanel.java 规则说明 ├── StatsPanel.java 战绩统计 └── ...

🎯 功能展示

1. 主菜单

支持人人对战人机对战两种模式选择。

2. 棋盘对战

  • 15×15 标准棋盘,鼠标悬停有半透明预览
  • 人机模式下,AI自动计算最佳位置落子
  • 右侧功能按钮:悔棋、认输、重开


3. 胜负判定 & 战绩

自动记录胜负场次,比分保存在本地文件,关闭程序不丢失。


🤖 AI 算法

AI采用基于棋型评分的启发式搜索,核心思想:

遍历所有空位 → 评估每个位置的棋型 → 综合打分 → 选最高分

评分规则:连五 > 活四 > 冲四 > 活三 > 眠三 > 活二

同时评估进攻分(自己的棋型)和防守分(对手的棋型),防守权重略高,对方快赢时必须堵。

// AI核心:遍历空位打分publicstaticint[]getBestMove(Boardboard,intaiPlayer){inthumanPlayer=(aiPlayer==Board.BLACK)?Board.WHITE:Board.BLACK;intbestRow=-1,bestCol=-1,maxScore=-1;for(intr=0;r<Board.SIZE;r++){for(intc=0;c<Board.SIZE;c++){if(board.getPiece(r,c)!=Board.EMPTY)continue;intattackScore=evaluatePosition(board,r,c,aiPlayer);intdefendScore=evaluatePosition(board,r,c,humanPlayer);inttotalScore=attackScore+(int)(defendScore*1.1);if(totalScore>maxScore){maxScore=totalScore;bestRow=r;bestCol=c;}}}returnnewint[]{bestRow,bestCol};}

🚀 运行方式

# 直接运行 jar 包java-jartarget/Gobang-1.0-jar-with-dependencies.jar# 或 Maven 打包mvn package-DskipTestsjava-jartarget/Gobang-1.0-jar-with-dependencies.jar

📝 写在最后

源码已上传至 Gitee:https://gitee.com/SparkBool/gobang.git

如果对你有帮助,欢迎 ⭐ Star 支持!


本文为《面向对象程序设计(Java)》课程设计作品

http://www.jsqmd.com/news/1100590/

相关文章:

  • 第四届【AI创新先锋—2026中国AI产业创新先锋榜单】正式发布!
  • Outfit字体:9种字重的免费几何无衬线字体,打造完美品牌视觉系统
  • 前端开发者必读:CSRF攻击原理与实战防护指南
  • 手把手教你用Stellar Toolkit for File Repair 2.2.0修复损坏的Word/Excel/PPT文件(附PDF修复)
  • 安吉哪里可以晚托选哪家
  • YOLOv10模型改进-卷积层改进-第15篇: YOLOv10改进策略【卷积层】| ShuffleNetV2通道混洗
  • STM32CubeMX实战:手把手教你配置IWDG独立看门狗,防止程序跑飞(附超时计算避坑指南)
  • 面试八股文记录(一)-Android
  • 别再只盯着代码了!聊聊ADAS测试工程师的日常工具箱:从校准板到数据记录仪
  • 如何用G-Helper实现华硕笔记本的精准性能控制与优化
  • 告别命令行!用JGit在Java项目里优雅地操作Git(附完整代码示例)
  • 如何快速获取网盘直链下载地址:LinkSwift下载助手终极指南
  • 别再手动调阈值了!用OpenCV直方图找谷底,5行代码搞定图像自动分割
  • Gemini镜像站 解决 PHP/Java 编程问题实战:2026 年开发者调试与优化指南
  • 杰理之支持提示音断点播放【篇】
  • 别再手动敲代码了!用STM32CubeMX 6.10.0图形化配置你的第一个FreeRTOS工程(STM32F407探索者)
  • Java Web路径穿越漏洞实战:从WEB-INF泄露到安全防御
  • 无犯罪记录公证书需要什么材料?无犯罪记录公证多久拿到?
  • 车载音乐下载 | 2026年更新最全网盘资源转存免费下载分享+副业变现方法
  • 淘宝拍立淘图片搜索API完整文档
  • Web应急响应实战:从入侵排查到溯源加固的完整指南
  • QT常用控件篇(3)(上)
  • 外卖退潮与AI浪潮:2026年餐饮业运营逻辑的艰难重构
  • 基础控件的信号:
  • 靠谱的装修公司哪家专业
  • 哑光亮调lr预设|高级哑光柔焦人像写真Lightroom下载lr调色风格
  • 给国产大模型 Agent 一副身体:我用魔珐星云搭建具身交互智能数字人
  • 广货行天下!超高清供需会现场体验VEGA H2
  • 从 Token Approval 到权限撤销:自托管钱包授权管理实践
  • 【华为OD机试真题 新系统】1034、数据包分段传输的最小最大延迟 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)