首页 > 编程语言 >中国象棋程序的设计与实现(二)--源码

中国象棋程序的设计与实现(二)--源码

时间:2023-06-08 13:07:53浏览次数:58  
标签:中国象棋 cn -- fansunion 棋谱 chinesechess 棋子 net 源码




本篇将正式公布 中国象棋程序–高级版–楚汉棋兵 的所有源码。介绍一些相关信息,如源码下载地址、QQ交流群、源码结构、版权声明。其它更多文档,如 毕业设计论文、项目架构图图、心得体会、开发记录,将在本月全部公布。

有兴趣的同学,可以趁着 中秋节3天、国庆7天等假期,进行研究。我也将抽空选择性地回答一些问题。

源码注释比较多,不懂的可以在群里交流。

 

源码下载

a. 中国象棋交流群-群共享 群号 232733905


(一个完整的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

人机对弈主界面。


标签:中国象棋,cn,--,fansunion,棋谱,chinesechess,棋子,net,源码
From: https://blog.51cto.com/fansunion/6438999

相关文章

  • 图像处理、滤镜、水印添加Sample发布
    ***基本上我不提供源代码,但是我会尽量用文字把对应的算法描述清楚****因为靠自己的努力和实践写出来的效果才真正是自己的东西如果想要源码Demo,请联系我......
  • wsexplorer——windows下的抓包工具 可以直接抓进程对应的网络流量
    软件标签:WSExplorer抓包工具  wsexplorer1.5版本是一款非常实用的抓包工具,用户能够直接通过软件直接获取更多的数据,同时还设计了选择功能,只需挑选自己需要的数据,需要的用户快来绿色资源网下载吧!wsexplorer抓包工具简介:wsexplorer是最好用的抓包工具,1.5版本添加新功能,分离二进......
  • QuasarRAT-windows下远程控制工具 之前用过 生成Client.exe 然后远控你的机器
    QuasarRAT-windows下远程控制工具怀揣梦想的大鸡腿2018-02-2810:00:314873收藏1分类专栏:安全版权资源:https://github.com/quasar/QuasarRATQuasar是一种用C#编码的快速轻量级远程管理工具。Quasar提供高稳定性和简单易用的用户界面,是远程管理解决方案。就一开源的远控......
  • 图数据库HugeGraph——这个无非是利用cassandra+ES作为后端来做的图数据库,支持分布式
    HugeGraph介绍#以下引自官方文档:CopyHugeGraph是一款易用、高效、通用的开源图数据库系统(GraphDatabase,GitHub项目地址),实现了ApacheTinkerPop3框架及完全兼容Gremlin查询语言,具备完善的工具链组件,助力用户轻松构建基于图数据库之上的应用和产品。HugeGraph支持百亿以上的顶点......
  • Wireshark - HTTP Continuation——就是大包分块传输
    Wireshark-HTTPContinuationby JeremyCanfield |  Updated: March9th,2020  |  WiresharkarticlesLet'stakeanexamplewherethereisafilenamedStage1.phponthewww.example.comwebserver,andStage1.phpcontainsthephraseHelloWorld. When......
  • 2、客户端访问ZooKeeper--命令行客户端和图形化客户端访问
    客户端访问命令行客户端访问ZooKeeper安装zookeeper的bin里面,有命令行工具[root@ubuntu2004~]#ls/usr/local/zookeeper/bin/zkCli.sh/usr/local/zookeeper/bin/zkCli.sh里面存的脚本是由java运行起来的#可连接至zookeeper集群中的任意一台zookeeper节点进行以下操作,zkCli......
  • 联邦学习算法介绍-FedAvg详细案例-Python代码获取
    联邦学习算法介绍-FedAvg详细案例-Python代码获取一、联邦学习系统框架二、联邦平均算法(FedAvg)三、联邦随梯度下降算法(FedSGD)四、差分隐私随联邦梯度下降算法(DP-FedSGD)五、差分隐私联邦平均算法(DP-FedAVG)六、FedAVG案例附代码1)案例背景2)参数设置3)结果展示4)代码详解七、完整......
  • 从0开始学pytorch【4】--维度变换、拼接与拆分
    从0开始学pytorch【4】--维度变换、拼接与拆分学习内容:维度变换:张量拆分与拼接:小结学习内容:维度变换、张量拆分与拼接维度变换:1、viewimporttorcha=torch.rand(4,1,28,28)print(a.shape)print(a.view(4,28*28))print(a.shape)b=a.view(4,28,-1)b.view(4,28,28,-1......
  • 从0开始学pytorch【3】--张量数据类型
    从0开始学pytorch【3】--张量数据类型前言学习目标基本数据类型创建tensor索引、切片小结前言  在前两篇博文中,从0开始学pytorch【1】–线性函数的梯度下降、从0开始学pytorch【2】——手写数字集案例中介绍了人工智能入门最为基础的梯度下降算法实现,以及机器学习、深度网络编......
  • python爬虫技术实例详解及数据可视化库
    前言在当前数据爆发的时代,数据分析行业势头强劲,越来越多的人涉足数据分析领域。面对大量数据,人工获取信息的成本高、耗时长、效率低,那么是否能用代码去完成大量复杂的工作,从而从网络上获取到目标信息?由此,网络爬虫技术应运而生。本文目录,你将会看到网络爬虫简介网络爬虫(webcrawler,又......