目录
一、实验目的与要求
1.熟悉cocos2d-x开发环境。
2.了解cocos2d-x中二维游戏场景绘制方法。
3.掌握瓦片地图编辑器使用方法。
二、实验内容与方法
1.完成基本实验 (30分)
按照“英雄快跑实验指导”文件指引,成功运行本次实验游戏。
2.修改游戏显示名称 (5分)
通过修改游戏代码,使自己的学号替换原“MyGame”字样出现在标题栏左上角。
3.修改游戏地图 (5分)
修改原有地图,将你的学号添加在背景中。
4.完成Bug修改 (10分)
通过修改游戏代码的方式修复BUG,如:游戏结束响应Bug、树枝检测Bug。
5. 游戏优化(5分)
自行设计并优化游戏。
6.录制通关视频 (5分)
录制游戏通关视频,上传至BB系统。
7.完成实验报告 (40分)
截图记录关键步骤,分析实验结果,撰写心得体会。
三、实验步骤与过程
1. 完成基本实验
首先我们使用 cocos new 命令创建新项目。
创建结果如下:
接着我们把红框内容复制到生成的项目中的"Classes"文件夹内,并把蓝框内容替换掉。
然后我们把红框内容中的图片、地图、字体资源复制到生成的项目中的"Resources"文件夹内。
接下来打开Visual Studio,添加、删除现有项(类)。
之后修改代码。
最后点击调试器按钮,稍等片刻,即可成功运行本次实验游戏。
2. 修改游戏显示名称
修改在AppDelegate.cpp中的applicationDidFinishLaunching函数。
3. 修改游戏地图
在Tiled软件中修改游戏地图,将学号添加在背景中,并保存为MoveAndControl_new,以区分修改前后。
接下来在Config.h中修改地图的路径,以指定新的地图。
再次运行游戏即可看到修改结果。
4. 完成Bug修改
1) 树枝检测Bug
注意到原本游戏中,游戏角色在经过树枝部分时会掉落,并不会留在树枝上通过。
我们观察代码,可以发现,游戏是通过TiledID和playerTiledID来判断是否要自动下落,所以我们需要知道树枝部分的TiledID。
我们打开Tiled软件,将光标移到树枝部分的像素,查询属性栏得到树枝的TiledID值为148和132,但因为项目中从1计数,而Visual Studio从0计数,所以需要+1,即我们需要的TiledID值为149和133。
接下来我们来修改代码,在update函数中的判断自动下落部分加上对树枝的判断。
这里的效果是不跳动时遇到树枝不会自动下落,即可以在树枝上走动。
这里的效果是下落时遇到树枝时不会下落。
再次启动游戏即可看到游戏人物可以站在树枝上。
2) 游戏结束响应Bug
注意到原本游戏中,在game over之后地图仍然会向前滚动,导致游戏结束响应Bug。
我们观察代码,可以发现触发游戏结束的函数gameover()里缺少了让地图停止滚动的功能。
接下来我们只需要添加这部分代码即可解决问题。
再次启动游戏即可看到游戏正常结束响应。
5. 游戏优化
1) 修改游戏窗口大小
注意到游戏窗口起始大小只有480x320,导致部分地图不能完整体现,为了给予玩家更好的游戏体验,我们来修改游戏窗口大小。
修改在AppDelegate.cpp中的designResolutionSize参数。
效果如下图:
2) 添加键盘交互
为了增加与游戏的互动,我们可以添加更多的交互,这里我选择添加一些键盘交互。
首先我们需要在头文件中声明键盘事件函数。
然后在cpp文件里实现。
最后在场景的init函数中绑定回调函数即可。
交互中我实现了2种功能,分别是暂停功能以及控制游戏人物/地图速度的功能。
在游戏过程中按下键盘P键,会让游戏停止更新,从而达到暂停的效果,若此时再次按下键盘P键,即可让游戏继续更新。
如果按下键盘A键,则会增加速度变量,按下键盘S键,则会减少速度变量。该速度变量用于取代原本的定值。
四、实验结论或心得体会
根据实验指引顺利的完成了实验,通过这次实验,我熟悉了cocos2d-x的开发环境,对cocos2d-x中二维游戏场景绘制方法有所了解,并掌握了瓦片地图编辑器使用方法,最后根据以上知识完成实验。总的来说是一次不错的体验,期待未来能够做出一个好趣的游戏。