天天看点

cocos2d-x 写游戏(2)

    我们说一个c程序就是一个main函数,一个oop(面向对象)的c++程序就是一个app类的实例。在c++中,为了兼容c语言,入口还是main函数。但是我们使用一个类的来描述我们的程序。比如在cocos2d-x里面,main函数就放在了main.cpp文件里面。里面就只有一个AppDelegate app对象,这个app就代表着我们的游戏,下面句代码调用他的run函数,那么我们的游戏就运行起来了。

int main(int argc, char *argv[])
{
    AppDelegate app;
    return Application::getInstance()->run();
}
           

   我们不改动这部分的代码,而是定制AppDelegate这个类,来开发我们的游戏。这个类在AppDelegate.cpp文件中。他有三个函数,一个是在游戏启动时调用,一个是在进入前台时调用,一个是进入后台时调用。我们主要看看cpp-empty-test里面的代码。别看里面的代码这么多,其实我们只要在启动函数里面调用三句代码,就能够运行我们的程序了。

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto scene = Scene::create();
    director->runWithScene(scene);

    return true;
}
           

    作为一个游戏,首先需要一个场景,也就是Scene。Scene只是一个概念,我们称之为类,调用他的create函数创建一个真正的Scene出来,我们称之为这个类的实例。我们通过Director ::getInstance ()找到导演,然后告诉导演运行这个场景。当然一个默认的场景是空白的,所以现在我们的游戏里面什么也没有。这有点像拍电影,其实游戏被称为第9艺术,的确借鉴了不少的电影概念。之后我们定制我们的场景,然后加入多个不同的演员来演绎我们的游戏。

    如果利用c++写cocos2d-x游戏,上面就是我们游戏开始的地方。如果你用lua开始写游戏,就会稍有不同。我们打开player模拟器运行我们的程序,然后选择打开一个工程。

在跳出的面板中,第一个是选择工程目录,第二行是选择开始的脚本文件。第二行默认是$PROJDIR/scripts/main.lua,也就是工程目录下面的sripts里面的main.lua文件。这句我们基本上不用改动,只要选择我们的工程目录,在里面建立一个scrpts的目录,添加一个main.lua文件就可以了。我们利用sublime写这个文件:

require("framework.init")

local sharedirector = cc.Director:sharedDirector()
local scene = cc.Scene:create()
sharedirector:runWithScene(scene)
           

    这个代码和上面那个代码很相似,而且你会发现利用lua写会方便许多,只要写上这3句代码就足够了,完全不用管其他的东西。其中稍有不同在于lua和c++的语法差异。总之,我们的游戏就正式开始运行起来了。

cocos2d-x 写游戏(2)

继续阅读