-
软
件
系
统
设
计
报
告
齐天大圣之中国象棋
专
业
:
计算机科学与技术
班级
:
计
04-6
班
小组成员:
周川祥
指导教师:
张博、徐慧
职
称:
p>
2007
年
6
月<
/p>
徐州
目录
一、
概述
..............
..................................................
..................................................
........... - 1 -
1
引言
..............
..................................................
..................................................
....... - 1 -
2
项目开发计划
.....................
..................................................
.................................. - 1 -
2.1
开发周期
........
..................................................
............................................ - 1 -
2.2
详细计划
........
..................................................
............................................ - 1 -
二、概要设计
.....................
..................................................
..................................................
.... - 2 -
1
网络对战平台
.....................
..................................................
.................................. - 2 -
2
人机对弈
.................................................
..................................................
.............. - 2 -
3
游戏流程
.......................
..................................................
...................................... - 2 -
三、详细设计
.....................
..................................................
..................................................
.... - 4 -
1
、基本数据结构定义
......
..................................................
....................................... - 4 -
1.1
棋子与棋子坐标
......
..................................................
................................... - 4 -
2.2
棋子移动于悔棋
......
..................................................
................................... - 4 -
2
、基本走法判断和走法产生
...
..................................................
.............................. - 5 -
2.1
走法判断
.........
..................................................
............................................ - 5 -
2.2
走法产生与搜索
......
..................................................
................................... - 5 -
3
、网络版
..................................................
..................................................
............... - 5 -
3.1
网络消息定义
.....................
..................................................
....................... - 5 -
3.2
网络套接字设计
....................
..................................................
.................... - 6 -
3.3
网络消息处理
.....................
..................................................
....................... - 6 -
4
、单机版
..................................................
..................................................
............... - 6 -
4.1
估值函数
.......................
..................................................
............................. - 6 -
4.1.1
棋子的基本值与附加值
.
..................................................
................. - 6 -
4.1.2
棋子的灵活性与棋盘控制
.....
..................................................
............ 7
4.1.3
棋子关系的评估
....................
..................................................
............ 7
4.1.4
返回给搜索接口
....................
..................................................
............ 8
4.2
搜索函数
.......................
..................................................
.................................. 8
4.2.1
博弈树
........................
..................................................
........................ 8
4.2.2
alpha-
beta
搜索
.
................................................ .................................... 8
5
、其他功能
..........
..................................................
..................................................
.... 10
5.1
悔棋与还原
..................................................
............................................ 10
5.2
保存残局
.........
..................................................
....................................... 10
5.3
动态显示
CPU
和内存使用情况
.
...
..................................................
...... 10
6
、界面
p>
.........................................
..................................................
............................... 10
6.1
绘制棋子
.......................
..................................................
........................ 10
6.2
皮肤
.........................
..................................................
.............................. 11
四、项目测试
.....................
..................................................
..................................................
....... 11
1
、网络版
.......................................
..................................................
............................. 11
2
、单机版
..................................................
..................................................
.................. 11
五、用户使用说明
...................
..................................................
..................................................
. 11
六、问题分析
................
..................................................
..................................................
............ 11
1
、程序执行效率
........
..................................................
................................................
11
2
、内存管理的时间开销
..
..................................................
.......................................... 12
3
、程序智商
..........
..................................................
..................................................
.... 12
2
七、小结与体会
....................
..................................................
..................................................
.... 13
3
齐天大圣之中国象棋
-------
软件系统设计
一、
概
述
1
引言
前几学期,
我们学习了计算机专业的几门核心课程,
如数据结构、
操作
系统
等。
但是所学的仅仅停留在理论层次,
没有系统的将理论于实践结合起来,
缺乏
动手能力。
针对以上问题,本项目主要是运用数据结构与算法、计算机网络及<
/p>
TCP/IP
与编程等基础知识,结合人工智能、博弈论相关理论
,用
Visual C++ 6.0
开发平
台来开发“齐天大圣之中国象棋”
,本项目融合人机对弈和网络版于一体,用户
p>
可以随心所欲的在单机版与网络版中切换,还可以登录游戏大厅(简易版)
< br>,选
择好友对战。
2
项目开发计划
2.1
开发周期
8
周(
2007
年
5
月~
2007
年
7
月)
2.2
详细计划
11
~
13
周
复习有关数据结构与算法和网络编程基本方法,学习博弈论相
关理论
14
~
15
周
编制象棋中各个棋子的走法和攻防判断,
初步开发出网络版雏
形,给出评估函数。
16
周
完善网络版,运用前期学习的博弈
树和人工智能方法,给出
简易搜索函数
17
周
优化搜索函数,进一步做好细节部分,进行项目测试
18
周
整体把握,进一步完善
- 1 -
二、概要设计
1
网络对战平台
网络版主要功能如下:
1
、聊天功能
2
、判断走棋是否正确,程序自动恢复用户走错的棋位。
<
/p>
3
、如果一方走棋超时,给出提示后程序自动走一步。
4
、任意一方可以提出悔棋请求,待对方同意后
即可悔棋
5
、任意一方可以提出还原
悔棋请求,待对方同意后即可还原
6
、根据用户需要更改皮肤(包括整体颜色和背景图片)
2
人机对弈
人机对弈主要功能如下:
1
、对当前的棋局进行估值,判断双方的势力优劣
2
、根据当前棋局估值结果,寻找一步最优的走法
3
、调用搜索线程,根据当前的搜索结果走一步棋
4
、具有悔棋和还原功能
5
、动态显示当前搜索使用
CPU
和内存情况,评价搜索的效率
6
、根据用户要求改变下棋的难度
<
/p>
7
、根据用户需要更改皮肤(包括整体颜色和背景图片)
3
游戏流程
以下是本游戏的流程图:
- 2 -
中国象棋游戏总流程图
开始游戏
网络对战
人机对弈
初始化棋盘
创建游戏
加入游戏
用户走一步
连接服务器
连接服务器
一方输掉
创建本地服务器
并等待玩家加入
玩家加入
建立初始连接
选
择
已
创
建
的
服
务
加
入<
/p>
悔一步
Y/N
悔棋
N
继续走棋
Y
再来一局
Y
开始对战
一方输掉
N
继续走棋
Y
再来一局
Y
N
N
悔棋
Y
N
对方同意
悔一步棋
Y
游戏结束
- 3 -
三、详细设计
1
、基本数据结构定义
1.1
棋子与棋子坐标
typedef enum
//
棋子定义
{
NoChessMan=0,//
没
有棋子
//
帅
车
马
炮
仕
象
兵
Bla
ckKing,BlackRook,BlackHouse,BlackGunner,BlackAssis
t,BlackBishop,
BlackSoldier,
//
将
车
马
炮
士
象
卒
Red
King,RedRook,RedHouse,RedGunner,RedAssist,RedBisho
p,RedSoldier,
}ChessMan;
//
棋子坐标
,由于考虑到搜索时内存可能会占用很多,为了尽量节省内存,
采用了
< br>byte
类型,
byte
类型的
定义为:
typedef BYTE
unsigned char
struct ChessPos
{
BYTE x;
BYTE y;
}
2.2
棋子移动于悔棋
//
棋子的移动
struct ChessMove
{
int ChessID;
ChessPos pFrom;
ChessPos pTo;
};
//
正在移动的棋子
struct MovingChess
{
BYTE nChessID;
POINT ptMovePoint;
- 4 -
};
//
悔棋时需要的数据结构
struct UnDoMove
{
ChessMove
cmChessMove;
short
nChessID;//
被吃掉的棋子
};
//
棋子类型定义
typedef enum{BLACKCHESS,REDCHESS};
2
、基本走法判断和走法产生
2.1
走法判断
主要工作在
CMoveGenerator
类的成员函数<
/p>
IsValided()
函数中实现,分别对
每个棋子进行判断。此处省略。
2.2
走法产生与搜索
在进行走法产生的时候,
往往伴随着搜索进行。
对于
一个局面的所有直接后
继,
有两种选择:
一次产生一种走法然后搜索之;
或者一次产生其所有走法然后
搜索之。
由于存在着剪枝算法,
对一个局面的某一走法搜索之后
往往可能不再需
要搜索其他后继,
也就是说:
< br>可能不用产生全部走法就能够完成搜索。
一次产生
一种走
法看起来似乎更有效率。
但是,
由于剪枝算法的剪枝效率很大程
度上依赖
于节点的排列顺序,
往往一次产生所有节点,
然后以某种方法调整其排列顺序会
使搜索效率大大提高。所以,在实际使
用中,先一次产生一个局面的全部走法,
然后调整其搜索顺序。
实际上,
为了减少运算量,
事先建立的
小型数据库,
将所有的走法都保存在
数据库中,然后检索数据库
,这样会效率高一些。
3
、网络版
3.1
网络消息定义
定义在
CMyMessage
类中。在
CMyMessage
中,成员函数
virtual void
Serialize(CArchive& ar);
来将网络消息先序列化后再进行
传输,接受方受到消息在调用
Serialize
()函
- 5 -
-
-
-
-
-
-
-
-
-
上一篇:2018春国家开放大学(电大)学习指南形考任务参考答案
下一篇:语音包制作教程