- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
三消游戏SushiCrush s01e01???游戏框架:为了使项目的代码结构清晰,好的前期规划是很有必要的,下图是该节游戏工程的主要类结构,先从整体看一下,项目的组织结构,然后我们会对其内部实现做些解说。其中:
AppDelegate.cpp:程序入口,分辨率适配设置。PlayLayer.cpp:游戏场景层,游戏中所有的Node节点都在其内,它同时负责管理SushiSprite。SushiSprite.cpp:寿司精灵层,即游戏中可被消除和操作的对象。
在本章节教程中,我们将主要完成以下功能:
分辨率适配寿司的创建、布局和下落
程序入口AppDelegate.cpp是Cocos2d-x自动生成的一个类,它控制着游戏的生命周期,是Cocos2d-x游戏的通用入口文件,类似于一般 Windows 工程中主函数所在的文件。打开AppDelegate.cpp文件,在applicationDidFinishLaunching()函数中我们可以设置第一个启动的游戏场景:
复制代码
autoscene?=PlayLayer::createScene();
director-runWithScene(scene); 分辨率适配为了能更好的适应各种分辨率大小和屏幕宽高比的移动终端设备,游戏的开始,我们还是先来看看分辨率的适配设置。?打开AppDelegate.cpp文件,在applicationDidFinishLaunching函数里面添加如下代码,以便我们的游戏,能够更好的适应不同的运行环境。
复制代码
// 分辨率适配
glview-setDesignResolutionSize(320.0,480.0,ResolutionPolicy::FIXED_WIDTH);
std::vectorstd::stringsearchPath;searchPath.push_back(w640);
CCFileUtils::getInstance()-setSearchPaths(searchPath);
director-setContentScaleFactor(640.0/320.0); 设计分辨率是通过setDesignResolutionSize(width, height, resolutionPolicy)方法来设置的,第一,二个参数分别是设计分辨率的宽度和高度,第三个参数是你想要的模式。这里设置的分辨率大小是开发时为基准的屏幕分辨率大小。模式有五种:
EXACT_FIT 整个游戏内容都会在屏幕内可见,并且不用提供比例系数。x,y会被拉伸,使内容铺满屏幕,所以可能会出现形变,所有的应用程序看起来可能会是拉伸或者压缩的。NO_BORDER 一个方向铺满屏幕,另外一个方向超出屏幕,不会变形,但是可能有一些裁剪。SHOW_ALL 该模式会尽可能按原始宽高比放大游戏世界,同时使得游戏内容全部可见。内容不会形变,不过可能会出现两条黑边,即屏幕中会有留白。FIXED_WIDTH 该模式会横向放大游戏世界内的内容以适应屏幕的宽度,纵向按原始宽高比放大。FIXED_HEIGHT 与上一中模式相反。
setSearchPaths()方法设置资源有哪些信誉好的足球投注网站路径,这里w640是有哪些信誉好的足球投注网站的文件夹名。setContentScaleFactor()方法设置内容缩放因子,顾名思义,就是设置整个游戏内容放大或者缩小的比例系数。寿司精灵 SushiSpriteSushiSprite类继承于Sprite,用来创建单个的寿司精灵,下面是它的类定义:
复制代码
class SushiSprite : ?public Sprite
{
public:?
static SushiSprite *create(int row, int col);// 随机创建不同种类的寿司精灵 static float getContentWidth();// 得到精灵图片的宽(精灵图片为正方形,宽等于高),方便后面计算精灵在场景中的位置。
?// 暂时没用到,在下一节的教程中我们将用来定位行列。?
CC_SYNTHESIZE(int, m_row, Row);?
CC_SYNTHESIZE(int, m_col, Col);?
CC_SYNTHESIZE(int, m_imgIndex, ImgIndex);}; CC_SYNTHESIZE的定义如下:
复制代码
#define CC_SYNTHESIZE(varType, varName, funName)\
protected: varType varName;\
public: virtual varType get##funName(void)
文档评论(0)