cocos2d-x游戏实例 《简单棋》入门尝试(二) 初始化程序界面

来源:互联网 发布:java仿京东商城源码 编辑:程序博客网 时间:2024/05/14 13:45

以下步骤主要参考游戏实例-《跑跑跑》制作教程(第一篇)——加载地图。不多说,直接步骤。

        一、创建工程。

工程名SimpleChess。

二、添加类ChessScene。

1、功能

类ChessScene主要作为程序的入口管理、游戏UI加载。

2、步骤

(1)在ChessScene.h中加入头文件

#include "cocos2d.h"using namespace cocos2d;
(2)定义ChessScene继承自CCLayer。
class ChessScene:public CCLayer
(3)在ChessScene.h加入函数声明

CREATE_FUNC(ChessScene);// 相当于重写CCLayer中的create函数,让create函数返回子类对象。virtual bool init();// 初始化,可以在这里创建精灵static CCScene* scene();// 在这里要自己新建一个CCScene类,然后把我们自定义的场景类作为一个CCLayer添加到这个CCScene类中
(4)在ChessScene.cpp实现函数声明

CCScene* ChessScene::scene(){CCScene *mScene = CCScene::create();//创建了一个真正的CCScene类ChessScene *mLayer = ChessScene::create();//ChessScene作为一个layer(一个层),它被添加到刚刚创建的那个CCScene类了。mScene->addChild(mLayer);return mScene;}bool ChessScene::init(){CCTMXTiledMap *map = CCTMXTiledMap::create("map/chessboard.tmx");//添加地图this->addChild(map);return true;}

(5)在AppDelegate.cpp中加入ChessScene头文件。并修改代码:

// create a scene. it's an autorelease objectCCScene *pScene = HelloWorld::scene();
为:
// create a scene. it's an autorelease objectCCScene *pScene = ChessScene::scene();
(6)为了适应所画地图的大小,修改了main.cpp中设置大小的函数其设置为:setFrameSize(641, 641);

三、制作地图

我认为我无法将作图这个过程写的好过Tiled Map Editor(一) ,故我只表述下我做得图片的注意点。

1、注意点

(1)自己制作的棋盘图片资源链接地址(发现CSDN博客不支持上传附件,而且开始上传的貌似CSDN给我直接给干掉了,可能觉得我那个图片在坑人呜呼,所以此处将教程三中的图片也加载到了相应资源,希望别又给我删除了啊):棋盘图片资源

(2)我新建的Tiled的宽度是20,高度是20。(可直接打开地图源文件查看处理方式,或者参考推荐的教程拷贝对应图片与地图资源到响应目录)

(3)在对象层加入了21个对象(如果对于我要加入对象,或者怎么添加与操作这些对象上有疑问,在上面推荐的两个教程中都写到了,而且我认为他们比我写的好,故不多累赘),目的在于获取棋盘中可放置棋子的坐标值。其21个对象命名如下图:

2、遇到过的问题及解决办法

(1)因不熟悉Tiled,第一次参考上面推荐教程时只拷贝了.tmx地图文件到指定目录,程序根本无法运行。后仔细读推荐教程《跑跑跑》中第7小点,得以解决。

(2)在Tiled中,开始我新建了两个图层background、chessboard和一个对象图层chessmansObject。结合后面加载棋子的时候,棋子总是无法完全显示,总只显示部分,后来我将background、chessboard合并之后,得以解决。

四、执行效果图


原创粉丝点击