【计算机游戏开发】二维游戏场景绘制

本博客介绍了使用cocos2d-x进行游戏开发的实践经验,包括设置开发环境、实现游戏运行、通关、修改游戏显示名称、修复代码BUG、扩充地图及通关。重点讲述了如何解决树枝检测和游戏结束响应的Bug,以及如何使用TiledMapEditor扩展地图,并优化代码以完成新地图的通关。此外,还添加了获胜和失败的音效,并调整了游戏逻辑,使得角色在遇到障碍时能正确反应。
摘要由CSDN通过智能技术生成

github项目地址

一、实验目的与要求

  1. 熟悉cocos2d-x开发环境。
  2. 了解cocos2d-x中二维游戏场景绘制方法。
  3. 掌握瓦片地图编辑器使用方法。

二、实验内容与方法

  1. 完成基本实验 (60分)
    按照“英雄快跑实验指导”文件指引,成功运行本次实验游戏。

  2. 完成游戏通关 (5分)
    凭自身实力或修改游戏代码的方式通关,成功出现“Success”结束画面。

  3. 修改游戏显示名称 (5分)
    通过修改游戏代码,使自己的学号姓名替换原“MyGame”字样出现在标题栏左上角。

  4. 完成Bug修改 (10分)
    通过修改游戏代码的方式修复代码BUG,如:游戏结束响应Bug、树枝检测Bug等。

  5. 扩充游戏地图 (10分)
    在原有地图基础上,用瓦片地图编辑器(Tiled Map Editor)扩充地图宽度为2倍(高度不变),并自行设计新的右半边地图(建议风格与左半边地图保持一致)。

  6. 完成扩充地图通关 (10分)
    检查并优化代码,录制游戏通关视频(含扩充地图),上传至BB系统。

三、实验步骤与过程

1. 完成基本实验 (60分)

按照“英雄快跑实验指导”文件指引,成功运行本次实验游戏。
(1) 生成项目文件
cocos new MyGame –p com.2019092121.edu –l cpp –d I:\SZU\cocos2dx_Project
在这里插入图片描述
(2)替换项目内的源代码以及图片资料等
在这里插入图片描述
在这里插入图片描述
(3) 添加、删除现有项(类)
在这里插入图片描述 在这里插入图片描述
(4) 更改代码
在AppDelegate.h修改对应代码
在这里插入图片描述
在这里插入图片描述
(5) 调整窗口大小
在这里插入图片描述
(6) 运行程序
在这里插入图片描述

2. 完成游戏通关 (5分)

凭自身实力或修改游戏代码的方式通关,成功出现“Success”结束画面。
在这里插入图片描述

3. 修改游戏显示名称 (5分)

通过修改游戏代码,使自己的学号姓名替换原“MyGame”字样出现在标题栏左上角。
(1) 修改AppDelegate.cpp中代码
在这里插入图片描述
在这里插入图片描述

4. 完成Bug修改 (10分)

通过修改游戏代码的方式修复代码BUG,如:游戏结束响应Bug、树枝检测Bug等。
(1) 树枝检测Bug
原游戏: 在经过长树枝时会掉落,并不会留在树枝上通过。
在这里插入图片描述
修改bug方法:
首先打开tiled map editor,,将光标移到目标像素,查询左下角得到树枝的tiledID值为149和133。(项目中从1计数,所以需要+1)
在这里插入图片描述 在这里插入图片描述
第一处修改:
添加(playerTiledID != 149) && (playerTiledID != 133)
效果是不跳动时遇到树枝不会自动下落,即可以在树枝上走动。
在这里插入图片描述
第二处修改:
添加tiledID == 149 || tiledID == 133
效果是下落时遇到树枝,不在下落。
在这里插入图片描述
具体效果见最终游戏视频。
(2) 游戏结束响应Bug
原游戏:在game over之后地图仍然会更新向前滚动,会导致游戏结束响应Bug。
在这里插入图片描述
修改方法:
当game over之后,画面不再更新。
在这里插入图片描述

5. 扩充游戏地图 (10分)

在原有地图基础上,用瓦片地图编辑器(Tiled Map Editor)扩充地图宽度为2倍(高度不变),并自行设计新的右半边地图(建议风格与左半边地图保持一致)。
打开Tiled Map Editor,地图——调整地图大小,修改为128*64,将地图长度扩展为两倍。
在这里插入图片描述 在这里插入图片描述
在这里插入图片描述
其中可站立的像素id为8、7、151、170、171、172、149、133。
需要与代码保持一致。

最终效果见通关视频

6.完成扩充地图通关 (10分)

检查并优化代码,录制游戏通关视频(含扩充地图),上传至BB系统。

  1. 添加获胜/失败音效
    在config.h中添加音效文件路径
    在这里插入图片描述
    添加头文件
    在这里插入图片描述
    在失败/胜利后播放音效
    在这里插入图片描述
    在这里插入图片描述
    playEffect()中参数需要时char*,需要将string进行转换
  2. 修改不合理设计
    原游戏中,当玩家前方是土块时,仍然会掉落,这明显不符合实际,理应被挡住。
    所以在此处修改为会被土块,木条等物品挡住前进。
    修改方案:
    首先获取精灵面前的tiledID
X:(int)(player_map_x / map->getTileSize().width)
Y:(int)(map->getMapSize().height - 2 - player_map_y / map->getTileSize().height))

利用map->getLayer(MAP_BG_LAYER_NAME)->getTileGIDAt()获取ID
然后判断该ID是否是土块等物品之一,如果是,则返回,不会更新地图移动,让小人原地跑步,直到下一次跳跃。
在这里插入图片描述
注意:需要首先判断精灵是否位于地图中,否则会在失败时报错。

最终效果见通关视频。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex_SCY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值