• [置顶] 中国象棋程序的设计与实现–楚汉棋兵(高级版)(源码)


    本篇将正式公布 中国象棋程序–高级版–楚汉棋兵 的所有源码。介绍一些相关信息,如源码下载地址、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

    d.中国象棋交流群  楚汉棋兵  232733905

    原文参见: http://FansUnion.cn/articles/2417

  • 相关阅读:
    jQuery及javascript DOM创建节点(三)
    jQueryEasyUI Window的基本使用
    3.1、值类型
    手动依赖注入(二)
    3.1.2、字符类型
    不错不错
    我们应该讨论什么? 就面向对象的讨论所引发的一些思考
    保存个地址, 顺便问个问题~
    嗯嗯, 今天很高兴
    方法级AOP: 又一个补丁
  • 原文地址:https://www.cnblogs.com/riskyer/p/3327469.html
Copyright © 2020-2023  润新知