关键词不能为空

当前您在: 首页 > 育儿 >

象棋游戏设计_课程设计报告

作者:陕西保健网
来源:http://www.xapfxb.com/yuer
更新日期:2021-01-27 06:21

水银中毒有什么症状-

2021年1月27日发(作者:管松涛)

学号

1608220203



2016-2017
学年

第一学期


Windows
程序设计》


课程设计报告






象棋游戏设计
















指导教师:









学院


0
一六年十一月十五日






























14


1.
设计目的

........................... .................................................. .................................................. ........
3

2.
游戏的设计内容

..... .................................................. .................................................. ..................
4

2.1
象棋特点及基本下法

.
................ .................................................. .....................................
4

2.2
象棋常用的取胜方法

.
................ .................................................. .....................................
5

3.
游戏设计步骤

......................... .................................................. .................................................. ..
6

3.1
制作棋盘界面

.
...... .................................................. .................................................. .........
6

3.2
编码实现
........... .................................................. .................................................. .............
7

3.2.1
判断马的走法是否合理
...................... .................................................. ................
8

3.2.2
断兵
/
卒的走法是否合理
............. .................................................. .......................
9

3.2.3
判断車的走法是否合理
...................... .................................................. ..............
1
0
3.2.4
判断炮的走法是否合理
...................... .................................................. ..............
1
0
3.2.5
判断象的走法是否合理
...................... .................................................. ..............
11
3.2.6
判断士的走法是否合理
.................................................. ....................................
11
3.2.7
判断将
/
帅的走法是否合理
............ .................................................. ..................
1
2
3.2.8
悔棋

.............................................. .................................................. ......................
1
3
3.2.9
胜负判断

........................ .................................................. ....................................
1
4
3.2.10
键盘鼠标操作支持

.
.............. .................................................. ...........................
1
5
4.
运行测试

........................... .................................................. .................................................. ......
1
6
5.
小结

.
...... .................................................. .................................................. ..................................
1
7
6.
参考文献

........................... .................................................. .................................................. ......
1
8
7.
附录

.
...... .................................................. .................................................. ..................................
1
9

14


1.
设计目的

象棋是人们喜欢的一种 棋类游戏,
近来,
随着计算机的快速发展,
以计算机
作为对战平台,
各种棋类游戏如雨后春笋般纷纷冒出,
使得那些喜爱下棋,
有常
常苦于没有对手的棋迷 们能随时过足棋瘾,
而且这类软件个个水平颇高,
大有与
人脑分庭抗礼之势。

当我们与电脑对战对时,
您知道这些软件是怎样像人脑一样进行思考的吗?
总的来说( 我们假定您熟悉象棋的基本规则),要让电脑知道该在哪一点下子,
就要根据盘面的形式,
为每 一可能落子点计算其重要程度,
也就是当这子落下后
会形成什么模型,
然后通览全盘选 出最重要的一点,
这便是最基本的算法。
当然,
仅靠当前盘面进行判断是远远不够的,
这样下棋很容易掉进玩家设下的陷阱,

为它没有考虑以后的变化。
所以在此 基础上我们需要使用好的算法是电脑能预测
出今后几步的各种走法,
以便做出最佳选择,
这也是我们下棋时常说的
“想了几
步”。怎样才能达到这个程度呢?这是本文所要讨论的主要 问题。本人使用
C#
语言作为开发工具,
编写了这个象棋游戏,
软件实现了人 机对弈和双人对弈的功
能,游戏软件界面美观,操作容易。


























2.
游戏的设计内容



















14


2.1
象棋特点及基本下法

象棋的娱乐性强、规则简单、易学、流行性广< br>,
普通人不需长时间专门训练
即可自如行棋
,
因此极受大众喜欢。
象棋基本下法为
:
帅(将):帅(将)是棋中的首脑,是双方竭力争夺的目标 。它只能在九宫
之内活动,可上可下,可左可右,每次走动只能按竖线或横线走动一格。帅与将
不能在同一直线上直接对面,否则走方判负。

仕(士):仕(士)是将(帅)的贴身保镖,它 也只能在九宫内走动。它的
行棋路径只有九宫内的四条斜线。

相(象):相(象)的 主要作用是防守,保护自己的帅(将)。它的走法是
每次循对角线走两格,俗称“象飞田”。相(象)的 活动范围限于河界以内的本
方阵地,不能过河,且如果它走的田字中央有一个棋子,就不能走,俗称“塞 象
眼”。

车:车在象棋中威力最大,无论横线、竖线均可行走,只要无子阻拦,步数
不受限制。因此,一车可以控制十七个点,故有“一车十子寒”之称。

炮:炮在不吃 子的时候,移动与车完全相同。当吃子时,己方和对方的棋子
中间必须间隔
1
个棋子< br>(无论对方或己方棋子)

炮是象棋中唯一可以越子的棋
种。

马:
马走动的方法是一直一斜,
即先横着或直着走一格,
然后再斜着走一个
对角线,
俗称
“马走日”

马一次可走的选择点可以达到四周的八个点,故有
“八
面威风”之说。如果在要去的方向有别的棋子挡住,马就无法走过去,俗称“蹩< br>马腿”。

14


兵(卒):兵(卒)在未过河前,只能 向前一步步走,过河以后,除不能后
退外,允许左右移动,但也只能一次一步,即使这样,兵(卒)的威 力也大大增
强,故有“过河的卒子顶半个车”之说。


2.2
象棋常用的取胜方法

双车错:双车交错将军取胜;

白脸将:
利用双方将帅不得直接对面的规则取胜
(右图以己方帅占中,
车照
将对方老将取胜);

马后炮:马定将,炮在后面将军;

肋马车:车在肋道,马协助杀将;

天地炮:中炮和底炮牵制对方中线和底线,利用其它棋子(多为车)将军取
胜;

铁门栓:中炮牵制对方中线子力,用己方车从底线将军取胜;

大刀剜心:
中 炮牵制对方中路子力,
弃车强砍对方中士构成铁门栓局势取胜。
同样局势下,用兵则为“小刀剜 心”;

重炮;双炮构成一线攻击对方老将取胜;

夹车炮:车和双炮攻击对方老将取胜,双炮的作用等同于一车;

三进兵:兵(在炮保护下)的步步推进将军取胜;

海底捞月:
车、
炮胜单车的实用残局,
要求车炮方夺取中路控制权才容易取
胜;

老兵搜林:
车、
底兵胜单车的实用残局,
要求车兵方夺取对中路控制权才容
易取胜;
14


卧槽马(马定将,其他子力将军);

钓鱼马(马定将,其他子力将军);

金钩马(马定将,其他子力将军);

八角马(马定将,其他子力将军);

高钓马(马定将,其他子力将军);

3.
游戏设计步骤


3.1
制作棋盘界面



新建一个
Windows
应用程序,项目命名为“控件版象棋” 如图所示设计
象棋界面。

Visual
集成开发环境项目中的
( 解决方案资源管理器)
窗口中,
双击

文件,
进入

文 件的编辑界面。
如图添加控件,
主要控件属性如下表所示。








1.
象棋界面



14





1.
各控件属性对象



3.2
编码实现

一、
Class1
是一个自定义类,记录了旗盘位置特点类,
以非常技巧的数据结

,
记录了每一时刻旗盘上 的旗子情况。

GetNearPoint
求两点间的距离公式
N (x2-x1)2-(y2-y2)2





Cou ntIndex
已知一个点
,
求出此点映射到一维数组对应的索引,
既是代表 在
棋盘上的位置。公式为:
(y2-y1)/*9+(x2-x1)/

index
决定是前进还是往后退:

int index=ndex(point);
if(index>=0&&index<45)
return
else

14




{


if(index>=45&&index<90)
return
class2
继承于
class1

也是一 个自定义类,
记录了旗盘位置特点类
,
规定了各
个旗子的走法。没有考虑所有 情况
,
而只考虑了真的情况
;
能够避免作蔽
,
程序规定必须按每个旗子的走法走旗。旗子判断步伐时,为了提高执行效率
,
只判断旗
子 可以走的情况。
自己周围的规则点是不是在旗盘上
;
如果周围的规则点在旗盘

,
则该点是否是自己的旗子
,
如果是
,
则不允许走。< br>
首先判断各个棋的走法是否合理之前,
都要先判断这个棋子能不能走。
既先< br>求标志起点信息的一维数组的索引,
再求标志终点信息的一维数组的索引,
如果
起点和终点是同一个点
,
则允许放回旗子
,
重新选其它路,如果起点和终点是 同一
边的旗子
,
则不能走

3.2.1
判断马的走法是否合理

除去以上几种情况
,
其余终点都不能落旗

当马向上跳时有两种跳法
(
左上日和右上日
)

起点上面 没有旗子
,
也就是不

挡马腿

时可以往上走旗:
if (tPoint(fromPoint,-2,1)==toPoint||tPoint(fromPo
int,-2,-1)==toPoint)

if([ndex(tPoint(fromPoint,-1,0))]==fal
se)

14


同上
,
只是变为向下跳马,不

挡马腿

时可以往下走:

tPoint(fromPoint,2,1)
tPoint(fromPoint,2,-1)
ndex(tPoint(fromPoint, 1,0))]==false)

同上
,
只是变为向右跳马,不

挡马腿

时可以往右走:tPoint(fromPoint,1,2)
tPoint(fromPoint,-1,2)
ndex(tPoint(fromPoint,0,1))]==false)

同上
,
只是变为向左跳马

tPoint(fromPoint,-1,-2)
tPoin
t(fromPoint,1,-
2)==toPoint)

3.2.2
断兵
/
卒的走法是否合理

要先判断起点是在旗 盘上方
,
还是下方,终点是在旗盘上方
,
还是下方。假如
起始点是蓝 兵,起点和终点都在下面或起点在下面终点在上面时
tPoint(fromPoint,-1,0)< br>,如果终点是起点的上面一个点
,
则返回真

如果起点和终点都在上面时有以下几种情况:

14


过河后可以往上走:
tPoint(fromPoint,-1,0)

过河后可以往右走:
(tPoint(fromPoint,0,1)

过河后可以往左走:
tPoint(fromPoint,0,-1)

假 如起始点是红兵,规则同上蓝兵,不过是过河后往下走时是
tPoint(fromPoint,1,0 )
3.2.3
判断車的走法是否合理

1
、起点和终点在同一条垂直直线上,

起点在终点下面,判断起点终点之间有无旗子:

for(int i=-1;tPoint(fromPoint,i,0)!=toPoint;i--)


起点在终点上面,判断起点终点之间有无旗子:

for(int i=1;tPoint(fromPoint,i,0)!=toPoint;i++)
2
、起点和终点在同一条水平直线上

起点在终点左边判断起点终点之间有无旗子:

for(int j=1;tPoint(fromPoint,0,j)!=toPoint;j++)


起点在终点右边

3.2.4
判断炮的走法是否合理

14


1

起点和终点在同一垂直线上

起点在终点 下面,
先判断起点终点之间旗子数量,
如果起点和终点之间的旗
子数大于
1,
则不能落旗;起点和终点之间无旗子
,
且终点也无旗子
,
则可以在终 点
落旗;
起点和终点之间仅有一个旗而且终点有旗子且是对方的旗子,
炮就可以吃掉对方的棋子。

for(int i=-1;tPoint(fromPoint,i,0)!=toPoint;i--)



if(number_QiZi>1)










还有起点在终点下面、
起点 在终点右边、
起点在终点左边这三种情况,
编程
方法同上。

3.2.5
判断象的走法是否合理

如果起点和终点所在边不相同
,
如一个在河上
,
一个在河下
,
则不能落旗
,
即各< br>边的象不能过河
.
象的四种走法
:
当象向右下方跳时右下田
,
起点右下一个点上没有旗子
,
也就是不挡象腿时可
以往上走旗
:

if(tPoint(fromPoint,2,2)==toPoint)


tPoint(fromPoint,1,1))]==false



左下田
:(fromPoint,2,-2)

fromPoint,1,-1))]==false
14

水银中毒有什么症状-


水银中毒有什么症状-


水银中毒有什么症状-


水银中毒有什么症状-


水银中毒有什么症状-


水银中毒有什么症状-


水银中毒有什么症状-


水银中毒有什么症状-



本文更新与2021-01-27 06:21,由作者提供,不代表本网站立场,转载请注明出处:http://www.xapfxb.com/yuer/429915.html

象棋游戏设计_课程设计报告的相关文章