用VS软件开发“中国象棋“游戏<笔记摘录>

用VS软件开发“中国象棋“游戏<笔记摘录>

 整体架构如上

1.很直观地去看这个中国象棋的界面,数一下它有多少行和多少列.

10行,9列:要注意这里数的是安放象棋的位置,有10行9列

这里我们首先想到的必然是二维数组,每一个行列交叉的点都设置成二维数组a[i][j]这样的格式,以此来确定棋盘上面每一个棋子的位置和走向.

用VS软件开发“中国象棋“游戏<笔记摘录>

我们把上面安放棋子的二维数组定义成一个地图,也就是map[i][j]的格式,但同时要注意,每一个象棋棋子都有行,列,颜色,是否过河和名称(也就是什么棋子)几种定义区分.

那么这里我们就需要把棋子定义成一个结构.如下:

当定义了棋子综合信息,我们是不是需要每一个信息都拓展一下/p>

x代表的是在棋盘上面的列,也就是竖行,y代表的是棋子在棋盘上面的行,也就是横线,而type代表的棋子的颜色,棋子颜色可以分为黑色和红色两种;river设置成bool型的,只需要判断棋子是否过河就可以了.最后id定义的是棋子上面的名称,比如将,帅等.

接下来我们就来VS当中进行棋子的程序定义拓展:

distance longth 和high我们都把其设置成宏,这个就要回溯到棋盘上面,把棋盘假设成一个xy的二维坐标,那么要定义每一个棋子的位置,或者说是每一行与每一列的交叉点,就要用到上面三个宏定义.

比如左上角第一个棋子的坐标可以表示为:

map[0][0].x=distance;

map[0][0].y=distance

而第一行第二个棋子的坐标可以表示为:

map[1][0].x=distance+longth;

map[1][0].y=distance

依次类推……

我们可以推断出每一个棋子的坐标,都可以通过上面几个宏定义以及棋子的实际行列表示出来,

这里我们把棋子的id设置成一个联合结构数组,因为里面的棋子的id都基本不同,同时我们考虑到了棋子要进行运动,把棋子的开始状态设置为BEGIN

而新建一个move的结构,表示鼠标选中棋子的基本信息.begin的行列和结束的行列和运行状态.

最后回到棋子id上面,我们是不是需要把这些id都设置到棋子或者棋盘上面啊,采用常量字符数组的形式,把棋盘上面所有的棋子都表示出来.

而把刚才的map[i][j]二维数组同样定义成一个二维结构数组.如下:

同时,我们设置了AImap[i][j]的二维结构数组,看看是否下面在进行棋子移动的时候,我们会用到.

这里i=9,j=10是根据我们上面看中国象棋棋盘得到的数据.

2.我们要开始加载图片信息了,把我们已经有的棋盘素材放在同文件下面,然后采用下面程序,就可以在窗口当中显示出中国棋盘的背景图.

至于,loadimage()和initgraph()函数以及putimage()函数三者的基本理解和解释,建议去搜索,都有比较详细的解释.这里我们解释一下initgraph()函数的基本含义:

这个函数用于初始化绘图环境。

参数:

width   绘图环境的宽度。

height   绘图环境的高度。

flag  绘图环境的样式,默认为 NULL。

上面程序的基本思路也就不言而喻:先加载或者找到我们素材的地址,然后定义出素材的宽和长度,然后再输出这个棋盘背景.

当输出完背景之后,我们是不是要先把所有的棋子放在初始位置,也就是初始化棋盘/p>

来源:IC 见路不走

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月25日
下一篇 2022年10月25日

相关推荐