天天看點

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)

繼續閱讀