说明:
<学习>系列所有的源代码均由《计算机游戏程序设计》提供。本人会在这些代码中融入自己的想法,对其进行迭代优化,旨在个人学习。
实现效果:
(因为雾效粒子太逼真导致gif动图随便一录就几十M,而博客里只能上传5m以下的图……费劲功夫减时长 减帧数 减质量才弄出一张……)
学习目标:
1. 理解A*寻路算法原理。
2. 进一步熟悉地图编辑器的使用。
3. 实现游戏中的人工智能。
主要修改内容:
1.修改窗口大小。
2.增加“危险”区域,自动寻路过程中路过即死。
3.增加重新开始游戏功能。
4.增加自动生成地图功能,以实现“是男人就下100层”玩法。
三、实验步骤与过程
1.完成游戏编译
老套路编译运行游戏:
图 1
2.修改窗口大小
AppDelegate.cpp文件中修改自设窗口大小为1024*768,游戏窗口尺寸刚好。
图 2
再次运行游戏,成功容纳所有游戏内容:
图 3
3.增加“危险”区域
用TiledMap编辑原地图,进行些许改动并加上“墓碑”(ID为290),如下图红框内所示:
图 4
为实现以下功能:
- 当玩家宝藏设置在“墓碑”处,或途径“墓碑”,屏幕中央提示“Dangerous!”信息
- 当玩家到达“墓碑”处时,“笑脸”角色会停在“墓碑”处,屏幕中央“Dangerous!”改换显示为“Die!”,此时点击屏幕没有反应。
- 如果“宝箱”刚好在“墓碑”处,则当“笑脸”角色到达时,“宝箱”也会消失,但是不会显示“Found Treasure!”。
下面介绍两种实现原理:
- 算路径时就判断检测该路径上是否有“墓碑”,有则提示“Dangerous!”; 设置“墓碑”为精灵,在update函数中不断检验“笑脸”精灵是否和“墓碑”精灵相碰,相碰则通过用stopActionByTag等方法停止角色运动,判断为