结对作业

一、实验分析

本系统主要有以下4个模块,每个模块对应一个程序包:

1engine:搜索引擎包,系统的核心部分。

2message:网络对战过程中各种消息及其传递机制的类实现包。

3main:主界面实现包。

4pieces:棋子及其相关类实现包。

现就各个包中的要点给与说明。

二、项目功能

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、LocalMsgReceiverQzMessageHandlerMessageSender)。己方的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.5C2.5“(C6代表炮)这几种表示法之间的转换

3)棋谱文件的读入和存储。

4)开局库的生成:将近年实战的棋谱文件(可能有几种格式)整理生成开局库。

分工:刘畅负责写代码和整理分析程序功能,丁胜男负责代码测试以及测试后的截图。

 

心得体会:通过这次试验,我懂得了合作的重要性,两个人商量总比一个人瞎捉摸强。写代码还是有很多错误。以后更要细心认真的听课。加油。

posted @ 2015-05-17 16:43  刘畅13  阅读(142)  评论(6编辑  收藏  举报