中国象棋程序的设计与实现(二) | 您所在的位置:网站首页 › 中国象棋游戏设计 › 中国象棋程序的设计与实现(二) |
本篇将正式公布 中国象棋程序–高级版–楚汉棋兵 的所有源码。介绍一些相关信息,如源码下载地址、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.邮箱:[email protected] d.中国象棋交流群 楚汉棋兵 232733905 原文参见: http://FansUnion.cn/articles/2417 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |