本篇将正式公布 中国象棋程序–高级版–楚汉棋兵 的所有源码。介绍一些相关信息,如源码下载地址、QQ交流群、源码结构、版权声明。其它更多文档,如 毕业设计论文、项目架构图图、心得体会、开发记录,将在本月全部公布。
有兴趣的同学,可以趁着 中秋节3天、国庆7天等假期,进行研究。我也将抽空选择性地回答一些问题。
源码注释比较多,不懂的可以在群里交流。
源码下载
a. 中国象棋交流群-群共享 群号 232733905
b. CSDN下载 (免积分)http://download.csdn.net/detail/fansunion/6283631
(一个完整的Eclipse工程项目)
没有bug我不敢保证,我敢保证的是“包结构比较合理、类-函数-方法的命名比较规范、注释很详细”。
版权声明
Apache License 2.0
如出现争议,本人保留解释权等权力。
交流讨论
有兴趣的同学,可以加入交流群,大家一起交流。
中秋节放假和今后如果有空,可以选择性地回答一些问题。
项目结构
项目结构
包结构说明
楚汉棋兵2.0项目包图
软件包 |
|
cn.fansunion.chinesechess |
客户端和服务器端的入口界面类。 |
cn.fansunion.chinesechess.ai |
包含人机对弈的类。 |
cn.fansunion.chinesechess.config |
提供系统的默认配置信息。 |
cn.fansunion.chinesechess.core |
提供中国象棋的核心类,包括棋盘、棋谱、棋子、棋子点、游戏规则等。 |
cn.fansunion.chinesechess.load |
提供装载棋谱所需的类。 |
cn.fansunion.chinesechess.net.client |
包含实现联网对战模块客户端的类。 |
cn.fansunion.chinesechess.net.common |
联网对战公共类。 |
cn.fansunion.chinesechess.net.server |
包含实现联网对战模块服务器端的类。 |
cn.fansunion.chinesechess.ext.empress |
提供与扩展应用N皇后有关的类。 |
cn.fansunion.chinesechess.ext.maze |
提供与扩展应用迷宫求解有关的类。 |
cn.fansunion.chinesechess.print.part |
打谱之残局打谱相关类。 |
cn.fansunion.chinesechess.print.all |
打谱之全局打谱相关类。 |
cn.fansunion.chinesechess.save |
提供与保存和装载棋谱相关的类和接口。 |
资源包 |
|
config |
保存用户的游戏设置。 |
helps |
系统帮助文件,以html静态网页的格式显示。 |
manuals |
系统自带和用户保存的棋谱文件。 |
sounds |
背景音乐等声音文件。 |
所有类 |
|
cn.fansunion.chinesechess.ChessGUI |
客户端入口主界面。 |
cn.fansunion.chinesechess.ServerGUI |
服务器主界面。 |
cn.fansunion.chinesechess.ChessUtil |
工具类,提供系统常用和共用的功能,如获取图标和时间,播放音乐。 |
cn.fansunion.chinesechess.HelpDialog |
帮助对话框,提供了象棋规则和软件使用等帮助。内部封装了JEditorPane,实现了一个简单的浏览器,可以响应超链接等事件。 |
系统内核 |
|
cn.fansunion.chinesechess.core.ChessBoard |
抽象的棋盘类,分步骤绘制棋盘,而非直接绘制一个棋盘图片。棋盘是棋谱、棋子点集、棋子的拥有者。 |
cn.fansunion.chinesechess.core.Chessmanual |
棋谱类,提供操作棋谱的接口,如增加、删除、获取、设置棋谱。 |
cn.fansunion.chinesechess.core.ChessPiece |
棋子类,封装了ID、类别、所在方、宽度、高度和坐标6个属性。通过图片来绘制棋子。 |
cn.fansunion.chinesechess.core.ChessPoint |
棋子点类。棋盘中一共有9*10个棋子点,每个棋子点最多可以保存一个棋子。 |
cn.fansunion.chinesechess.core.ChessRule |
象棋规则工具类,提供了一系列的静态方法,用于判断棋子移动是否符合规则的接口。联网对战、全局打谱、残局打谱的规则有所不同。 |
cn.fansunion.chinesechess.core.ManualItem |
棋谱的一条记录。封装了移动起始坐标、被吃棋子ID(悔棋时使用)、移动棋子ID(可以不要)3个属性。 |
cn.fansunion.chinesechess.core.ManualUtil |
棋谱工具类,提供了保存和读取棋谱的接口。 |
cn.fansunion.chinesechess.core.MoveStep |
棋子移动的起点和终点。 |
cn.fansunion.chinesechess.core.PieceUtil |
棋子工具类,提供了生成、根据棋子的属性(ID、类别、所在方)查找棋子的接口,也提供了棋子类型转换的功能。 |
扩展应用 |
|
cn.fansunion.chinesechess.ext.empress.EmpressBoard |
N皇后用的棋盘,主要功能来自父类ChessBoard,自身只定义了获取棋盘背景色、获取棋盘类型等功能。 |
cn.fansunion.chinesechess.ext.empress.EmpressGUI |
N皇后主界面。根据用户输入皇后个数,生成N皇后的所有布局,并且可以根据用户选择显示某一个布局。也可以保存所有布局,主要有2种形式,一种简洁、一种全面。 |
cn.fansunion.chinesechess.ext.empress.EmpressModel |
N皇后模型,是对N皇后问题的抽象和封装,使用回溯算法实现。 |
cn.fansunion.chinesechess.ext.empress.EmpressUtil |
N皇后工具类,用于保存N皇后的所有布局。主要有2种形式,一种简洁,一种全面。 |
cn.fansunion.chinesechess.ext.maze.HorseMazeBoard |
馬的迷宫求解问题用的棋盘。 |
cn.fansunion.chinesechess.ext.maze.HorseMazeGUI |
馬的迷宫求解问题用的主界面。输入起点和终点,找出所有可走的路径。 |
cn.fansunion.chinesechess.ext.maze.HorseMazeModel |
馬的迷宫求解模型,是对馬的迷宫求解问题的抽象和封装,使用回溯算法实现。 |
cn.fansunion.chinesechess.ext.maze.IntPoint |
一个坐标位置的封装,保存整型的坐标。 |
cn.fansunion.chinesechess.ext.maze.Road |
馬的一条移动路径,起点到终点。 |
装载演示 |
|
cn.fansunion.chinesechess.load.ChessDemoGUI |
演示棋谱主界面。主要有上一步、下一步、第一步、最后一步和自动演示等功能。 |
cn.fansunion.chinesechess.load.ChessLoadingGUI |
装载棋谱主界面。 |
cn.fansunion.chinesechess.load.IconListItem |
棋谱项。 |
cn.fansunion.chinesechess.load.IconListItemRender |
棋谱列表项渲染器。 |
联网对战 |
|
cn.fansunion.chinesechess.net.client.MatachGUI |
比赛主界面。主要有走棋、悔棋、暂停、认输、求和、保存和聊天等功能。 |
cn.fansunion.chinesechess.net.client.NetworkBoard |
联网对战用的棋盘。 |
cn.fansunion.chinesechess.net.client.ObserverUtil |
观察者工具类,提供屏蔽观察者敏感消息的接口。 |
cn.fansunion.chinesechess.net.client.PlayerGroupGUI |
玩家组界面。创建者有权限开始游戏。 |
cn.fansunion.chinesechess.net.client.RoomGUI |
房间(大厅)界面。主要有创建游戏、加入游戏等功能。 |
cn.fansunion.chinesechess.net.cn.fansunionmon.Message |
消息类,消息有3种类型,发给所有人、发给某个人、系统消息。 |
cn.fansunion.chinesechess.net.common.MsgPacket |
服务器端和客户端通信用的数据包。 |
cn.fansunion.chinesechess.net.common.Creator |
封装了游戏创建者的基本信息。 |
cn.fansunion.chinesechess.net.common.Member |
封装了游戏成员的基本信息。 |
cn.fansunion.chinesechess.net.server.ListenPlayer |
监听一个用户的线程类。 |
cn.fansunion.chinesechess.net.server.User |
一个用户,封装了用户的基本信息,如用户名、密码等基本信息。 |
cn.fansunion.chinesechess.net.server.UserStream |
绑定一个用户和相应的输入输出流。 |
打谱 |
|
cn.fansunion.chinesechess.print.all.PrintAllBoard |
全局打谱用的棋盘。 |
cn.fansunion.chinesechess.print.all.PringAllGUI |
全局打谱主界面。 |
cn.fansunion.chinesechess.print.part.PiecesPanel |
残局打谱容纳备用棋子的面板。 |
cn.fansunion.chinesechess.print.part.Position |
棋子的位置,封装了棋子的ID和坐标。 |
cn.fansunion.chinesechess.print.part.PrintPartBoard |
残局打谱用的棋盘。 |
cn.fansunion.chinesechess.print.part.PrintPartGUI |
残局打谱主界面。 |
保存棋谱 |
|
cn.fansunion.chinesechess.save.GameRecord |
游戏记录类,封装一次比赛(包含打谱)的所有信息。 |
cn.fansunion.chinesechess.save.HelpBrowser |
帮助工具类,显示一个帮助对话框。 |
cn.fansunion.chinesechess.save.ISaveManual |
保存棋谱接口,需要实现保存棋谱功能的界面必须实现这个接口。 |
cn.fansunion.chinesechess.save.MsgRecordDialog |
聊天记录对话框。 |
cn.fansunion.chinesechess.save.SaveAsDialog |
另存棋谱对话框,用户需要选择棋谱保存的路径、名字和描述。 |
cn.fansunion.chinesechess.save.SaveDialog |
保存棋谱对话框,用户需要提供棋谱的名称和描述,保存在系统默认的目录。 |
人机对弈 |
|
cn.fansunion.chinesechess.ai.AIConstants |
保存了棋子的价值、棋子的灵活值、棋子的位置值等常量值。 |
cn.fansunion.chinesechess.ai.AIUtil |
AI算法工具类。生成一个棋子的走法、一个局面的走法、对当前局面进行估值。 |
cn.fansunion.chinesechess.ai.FENUtil |
提供楚汉棋兵局面和FEN局面的相互转换的接口。FEN是专门用来表示象棋局面的记录规范,在这个规范下,一个局面可以简单地用一行“FEN格式串”来表示。 |
cn.fansunion.chinesechess.ai.ManMachineBoard |
人机对弈棋盘。 |
cn.fansunion.chinesechess.ai.ManMachineGUI |
人机对弈主界面。 |
联系方式
如有需要,可以通过以下方式联系我
a.CSDN博客留言,私信。
b.QQ: 240370818
c.邮箱:LeiWen@FansUnion.cn
原文参见: http://FansUnion.cn/articles/2417