五子棋的Java实现

五子棋的Java实现
title: Java Swing实现五子棋游戏人机对战AI完整源码date: 2026-06-30categories: 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(aiPlayerBoard.BLACK)?Board.WHITE:Board.BLACK;intbestRow-1,bestCol-1,maxScore-1;for(intr0;rBoard.SIZE;r){for(intc0;cBoard.SIZE;c){if(board.getPiece(r,c)!Board.EMPTY)continue;intattackScoreevaluatePosition(board,r,c,aiPlayer);intdefendScoreevaluatePosition(board,r,c,humanPlayer);inttotalScoreattackScore(int)(defendScore*1.1);if(totalScoremaxScore){maxScoretotalScore;bestRowr;bestColc;}}}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 写在最后源码已上传至 Giteehttps://gitee.com/SparkBool/gobang.git如果对你有帮助欢迎 ⭐ Star 支持本文为《面向对象程序设计(Java)》课程设计作品