标签:
结对人:刘畅、丁胜男
一、实验分析
本系统主要有以下4个模块,每个模块对应一个程序包:
1、engine:搜索引擎包,系统的核心部分。
2、message:网络对战过程中各种消息及其传递机制的类实现包。
3、main:主界面实现包。
4、pieces:棋子及其相关类实现包。
现就各个包中的要点给与说明。
二、项目功能
A、象棋对弈:红方先走,然后黑方再走,红黑交替,直到一方获胜。
B、新游戏:任何时候可以重新开始一盘新的对弈。
C、悔棋:当走错棋的时候可以悔棋。
D、信息提示:提示当前信息状态。
E、简单的帮助文档:象棋规则介绍、软件的简单介绍和编制说明
三、项目设计方案及分工
Engine:
(1) BitBoard.java:位棋盘的实现。
(2) CCEvalue.java:评价函数知识类。
(3) ChessPosition.java:动态局面类
包含对局过程中的动态信息,主要实现的是各类位棋盘和移子函数。
(4) MoveStruct.java:着法表示类。
(5) PreMove.java:伪合法着法生成模块。
(6) MoveSortStruct.java:合法着法的生成及其排序算法。
(7) SearchMove.java:搜索算法。
Message:
在对弈过程中(主要是网络对弈)需要在对弈双方之间传输各类信息,抽象为各类消息。如时间规则的协定、各方的走子信息等。每方都有消息接收、消息处理和消息发送程序(OuterMsgReceiver、LocalMsgReceiver,QzMessageHandler,MessageSender)。己方的MessageSender与对方的OuterMsgReceiver通过接口SrConnection连接。所有接收的消息放入消息队列QzMsgQueue中,等待消息处理进程QzMessageHandler来处理。所有的消息都封装在QzMessage类对象中,消息的类型通过消息的Header类型(以静态常量存放在MsgHeader类中)来区分。
Pieces:
Qizi.java包含棋子的信息,如棋子的(在棋盘上的)位置、图片、名称、类型、状态等。PiecesFactory.java以“工厂”模式提供根据棋子类型或其他信息生成相关Qizi对象的方法。
Main:
(1) NewBoard.java:棋盘坐标系统及其界面的实现。
(2) CChessApp.java:主界面类,以内部类实现了QzMessageHandler接口、计时规则TimeRule接口以及事件的处理程序,根据需要生成其他的并发线程如消息接收、处理和发送,机器思考(启动搜索引擎),计时显示等。
(3) SetRuleDialog.java:设置规则的对话框。
(4) SetSysInfoDialog.java:设置系统的一些属性如对战模式、连接端口等。
(5) Translation.java:提供了一系列实用方法主要有:
1)FEN串与局面ChessPosition对象之间的转换
2)不同着法表示(见第一章)之间的转换。如“炮二平五”与“Ch2-e2”及“62.5或C2.5“(C和6代表炮)这几种表示法之间的转换
3)棋谱文件的读入和存储。
4)开局库的生成:将近年实战的棋谱文件(可能有几种格式)整理生成开局库。
心得体会
通过这次结对一起做实验,我懂得了许多,知道了团结的重要性,经过几天的努力,基本上完成这一次的实践报告。也基本上实现了我在需求分析时所预期的功能。通过这次的实践,使将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识。
标签:
原文地址:http://www.cnblogs.com/dingshengnan/p/4510012.html