- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
注意:本文档请用word打开,然后启用编辑模式,直接点击图标就可以查看源代码了
C语言推箱子小游戏
——EGE图形库版
作者DawsonLeeEmaildawsonlee1790@
设计思路:
将整个画面分成13*16的矩阵,每个元素对应者一个小矩形。然后用0代表黑格,1代表白墙,2代表蓝格……,这样就有了整幅图像的信息。然后移动就可以想象成,改变矩阵的坐标信息,形成一个新的矩阵,再重绘。这就是推箱子的基本原理。
#define BLACK 0 //黑格:用于填充图像
#define WHITEWALL 1 //白墙:用于阻挡主角移动
#define BLUEWALL 2 //蓝格:用于表示可移动空间
#define BALL 3 //点 :用于指定箱子放置位置
#define BOX 4 //箱子:用于表示初始箱子位置
#define REDBOX 5 //变色的箱子:用于表示这个点位置已经放置箱子
#define MAN 6 //主角:用于表示主角位置
#define MANBALL 7 //主角站在点上
01234567891011121314150123456789101112
下面,我就给大家讲解怎么写出推箱子小游戏。
1.编译环境:VS2015
2.要给VS2015安装EGE图形库 HYPERLINK /p/b12163e5a0b7 /p/b12163e5a0b7
3.要参考EGE图形库帮助文档 HYPERLINK /man/index.htm /man/index.htm
4.刚才我们说到,图像的背后对应着一个矩阵,我们可以考虑将矩阵的信息存储在一个MAP.txt文件中,在程序运行时读取。下面我来介绍,在文件中读取一个矩阵。
首先我们得有一个TXT文件:(一定确保路径放置正确)
存储着这样一个13*16的矩阵。
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 1 2 2 2 2 2 2 2 2 1 0 0 0
0 0 0 1 2 2 2 2 2 2 2 2 1 0 0 0
0 0 0 1 2 6 2 4 2 3 2 2 1 0 0 0
0 0 0 1 2 2 2 2 2 2 2 2 1 0 0 0
0 0 0 1 2 2 2 2 2 2 2 2 1 0 0 0
0 0 0 1 2 2 2 2 2 2 2 2 1 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
文本文件中的矩阵的读取操作源代码:
接下来,我们要把TXT文件的读取矩阵的功能,写在一个readmap()函数中,实现功能的模块化。并加多一项功能,就是查找出,MAN的位置。
5.接下来我们实现在窗口中,把矩阵信息转变成图像。原理就是,将图片贴在窗口上。
图片资源:(把当中的pic文件夹解压,存放在正确路径中,如果路径不正确会导致窗口中没有图像)
绘制操作的源代码:
实现的效果如图所示:
6.实现图像的绘制以后那我们就应该实现图像的移动了。
比方说向右移动
坐标信息man_i,man_j man_i,man_j+1man_i,man_j+2MANBOXBLUEWALL
向右移动
坐标信息man_i,man_j man_i,man_j+1man_i,man_j+2BLUEWALLMANBOX
首先将所有的情况列举出来并存入数组table[i][0]中,将改变后的第一个格子信息存在table[i][1]中,第二个格子信息存在table[i][2]中,第三个格子信息存在table[i][3]中。
table[i][j]情况(括号中的数值是为了保证情况的判断不会重复,数值不能相同)-1表示不赋值给第三个格子ij01230MAN*BLUEWALL(12)BLUEWALLMAN-11MAN*BALL(18)BLUEWALLMANBALL-12MAN*BOX
文档评论(0)