学了cocos2dx不久,许多知识还是不是很懂,呵呵,至少cocos2dx的API函数没懂多少。但是这个时候就不要绝望,应该先做一个让自己可以小玩一下的游戏。
@H_502_498@
这个教程我把cocos2d中自带的打飞机游戏MoonWarriors(月球战士)这个游戏从js版转化为c++版,讲解如何制作一个2D游戏。
一切从一个游戏菜单开始。
(一)环境配置
我简单地说一下配置cocosdx文件:
1.从官网上下载coccs2dx,解压出来就是一个文件
2.下载vs2012
3.下载python,并且配置python环境变量,具体怎么配置参考以下的博文:
(二)创建游戏工程:
接下来要创建一个工程MyMoonWarriors:
1.依次打开cocos2d-x-2.2.2->tools->project-creator
2.在project-creator目录下按住shift+鼠标右键,选择在此处打开命令窗口,输入命令:
python create_project.py -project
MyMoonWarriors-package org.MyMoonWarriors.game -language cpp
输入完以后,有如下效果就说明成功了:
这个时候工程文件的位置在cocos2d-x-2.2.2->projects->MyMoonWarriors
好!创建完文件以后就是迈向游戏制作的第一步!!
(三)创建游戏菜单:
1.放置资源文件:
2.开始写代码:
依次打开MyMoonWarriors->proj.win32->MyMoonWarriors.sln(因为我们是在windows下写代码,所以上面那些 其他文件夹如proj.andorid、proj.ios等等不用管它,后面会慢慢讲)
3.如何写代码:
打开MyMoonWarriors会发现我们不知如何下手,以前写的控制台程序对开发一个游戏来讲,简直是小巫见大巫,瞬间感觉以前多牛逼都是扯淡了。不过不要担忧,以前学的都是非常有用的。
好,开始写代码:
1.创建一个类StartMenu:
创建方法是在工程文件夹里面创建StartMenu.cpp和StartMenu.h,然后拷贝复制到VS2012中的classes文件夹下(= =疑问来了,为什么不直接在VS2012下直接创建文件?我试过了,如果直接创建,在工程文件夹会显示不出来,所以只能用这样一个稍微复杂的方法,以后创建文件都这样创建)
#ifndef
__StartMenu_H__
#define
__StartMenu_H__
class
StartMenu:publiccocos2d::CCLayer
{
public
:
staticcocos2d::CCScene *scene();//创建菜单场景
virtualboolinit();//初始化菜单类的成员变量
private
:
};
#endif
// !__StartMenu_H__
//#ifndef __StartMenu_H__,#define __StartMenu_H__关于这个作用无非就是防止头文件的重复包含和编译
2.在写StartMenu.cpp之前 ,我们还要创建一个StdAfx.cpp和StdAfx.h用来把需要包含的类库都放在这个上面,代码很简单
StdAfx.h:
#include
"cocos2d.h"//包含cocos2d类库
StdAfx.cpp:
@H_502_498@
3.开始写StartMenu.cpp:
#include
"StdAfx.h"//记住,这个要写在第一个
#include
"StartMenu.h"
CCScene
*
StartMenu::scene()
{
CCScene*scene=CCScene::create();
StartMenu*layer=StartMenu::create();
scene->addChild(layer);
returnscene;
}
bool
StartMenu::init()
{
if(!CCLayer::init())
{
returnfalse;
}
CCDirector*pDirector=CCDirector::sharedDirector();//创建一个导演类,用来调用整个场景所需要的变量,比如窗口大小
CCSizewinSize=pDirector->getWinSize();//通过导演类获得窗口的大小
CCSprite*pLoadingImg =CCSprite::create("loading.png");//创建一个精灵类,来存放一张背景图片
pLoadingImg->setPosition(
ccp(winSize.width / 2,winSize.height / 2));//图片放在正中央
returntrue;
}
//1.菜单是一个场景,场景要有一个导演来调度资源的排布
//2.精灵类在cocos2d中很常见,创建一个图片可以用一个精灵类CCSprite
4
.接下来可以运行看看效果了,把AppDelegate.cpp中
#include"StartMenu.h"
然后把
bool
AppDelegate::applicationDidFinishLaunching()
函数里面的
CCScene
*pScene =HelloWorld::scene();改成CCScene*pScene =StartMenu::scene();
点击F5调试运行,可以看到如下效果。成功加载了背景!!