- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中南大学
面向对象设计实验报告
题 目 制作走迷宫游戏
学生姓名 刘 毅 纯
学 号 1304120823
专业班级 信科 1202 班
指导老师 朱 世 华
数学与统计学院
2014年9月23日
走迷宫游戏GL库来实现也可以创建
先了解一下MFC(Microsoft Foundation Classes)32程序的区别但
用一个二维16*16字符数组表示迷宫图,若某位字符为空格,表示相应位置是通道,若某位字符为'H',则相应位置是墙,并将迷宫图数据命名为mazedata。这时就可以编写程序判别某位置是墙还是通道。也就是说,若不在迷宫外,则判别这一位是否为空格即可。将函数命名为wall,返回值为0表示不是墙,否则是墙。
char mazedata[MAZE_HEIGHT][MAZE_WIDTH] = {
{H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H},
{H, , , , , , , ,H, , , , , , ,H},
{H, ,H, ,H,H,H, ,H, ,H, , , , ,H},
{H, ,H,H, , ,H, ,H,H, ,H, ,H, ,H},
{H, , , , , ,H, , , , , , ,H, ,H},
{H, ,H,H,H,H,H,H,H,H, ,H,H,H, ,H},
{H, , , , , , , , , , , ,H, , ,H},
{H, ,H,H,H,H,H, ,H,H,H, ,H,H,H,H},
{H, ,H, , , ,H, , , ,H, , , , ,H},
{H, , , ,H,H,H,H,H,H,H, , , , ,H},
{H, ,H, , , ,H, , , ,H, , ,H, ,H},
{H, ,H,H,H,H,H, ,H,H,H,H, ,H, ,H},
{H, , , , , ,H, , , , , , ,H, ,H},
{H, , ,H,H, ,H,H,H,H, ,H,H,H, ,H},
{H, , , ,H, ,H, , , , ,H, , , ,H},
{H,H,H,H,H,H,H,H,H,H,H,H,H, ,H,H},
};
②绘制迷宫图的墙的顶部
迷宫图墙的顶部只有从高空观看时才是可见的,这里不需要用连续的四边形串或者合并相邻多边形的方法对绘制进行优化。实现方法是:判别当前位置是否为一面墙,若是则绘制这面墙,否则不绘制。在程序中建立一个显示列表用于绘制迷宫图的墙的顶部,显示列表称为walllist。
③绘制墙的侧面
墙的侧面不管是在高空还是在迷宫内部都是可见的。这里使用算法递归增长地建立围绕墙的连续四边形串,并且为墙的侧面贴上纹理,使其显得更为逼真。同时为绘制墙的侧面建立显示列表,命名为mazelist,读取并创建纹理的函数是 readtexture。
④从高空观看迷宫图
从高空观看迷宫图事实上就是同时绘制墙的顶部和侧面。为了产生游戏效果,设计了一段动画,即倾斜着旋转整个迷宫图,从而从各个角度观看它。用名为spinmaze的函数实现这项功能。函数中用一个静态变量表示旋转角度,每显示一帧画面,该变量增加一定大小。
在高空观看迷宫图阶段,将spinmaze函数作为空闲事件服务程序,使该绘制程序一次次的被调用,从而产生逐帧绘制的动画效果。高空观看到最后一帧时墙的顶部正对我们,即我们视线与迷宫图垂直。在完成了高空旋转观看迷宫图之后,需要将空闲事件服务程序设置为进入迷宫图的函数,从而为进入迷宫图内做准备。
⑤进入迷宫图
这一步作为从高空观看迷宫图到进行到内部漫游的过渡,要求平滑、自然,这里的实现方法是:每一步先绕x轴,再绕z轴旋转一个小角度,使视线从与迷宫图垂直的位置,到迷宫图内部的初始位置。实现此功能的函数命名为entermaze。
⑥迷宫漫游
迷宫漫游时该程序的主要部分,主要实现与玩家的交互。当玩家按下上、下、左、右键时,分别实现游戏者在迷宫内的前进、后退、左转、右转等。若shift键同时被按下,则用更快的速度移动。由于有墙的阻挡,每次移动时需要先与墙进行碰撞检测,当移动的目标方向上有墙阻挡时,则将移动方向改为与墙平行的方向继续前进。
这部分的主要函数:forward判断给定的目标方向上是否有墙阻挡,若有墙阻挡则改变移动方向;neighbor用来判别是否有一邻居为墙;diagonal判别对角线上是否为墙;onopen判断节点是否在深度优
您可能关注的文档
最近下载
- 人教版道德与法治三年级上册第5课《走近科学家》课件.pptx VIP
- 部编版语文四年级上册书面分层作业设计案例17《爬天都峰》(含答案).pdf VIP
- 章鱼v8餐饮-营业管理点单收银.pdf VIP
- 五级快递员题库(附参考答案).docx VIP
- 部编版语文四年级上册书面分层作业设计案例21《古诗三首》(含答案).pdf VIP
- 五级快递员习题库+参考答案.docx VIP
- 2025年抗菌药物培训考试试题含答案.docx VIP
- 部编版语文四年级上册书面分层作业设计案例20《陀螺》(含答案).docx VIP
- 酒店管理【运营前厅】亚朵前台操作手册2.0版.docx
- 2025【基于STM32的智能水质检测系统的设计9400字】.docx VIP
文档评论(0)