关键词不能为空

当前您在: 首页 > 育儿 >

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

作者:陕西保健网
来源: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

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