(魔塔案例)寫遊戲步驟:
阿新 • • 發佈:2019-02-17
1: 寫遊戲步驟:
A: 分離 場景(scene) 層(Layer)
B: 分離遊戲物件,
例如:GameScene功能已經相對單一, 但GameLayer內容駁雜,所以下面繼續拆分GameLayer類,目前遊戲主介面包含3個物件,即:地圖 勇士 手柄按鈕. 因此可以講GameLayer中的方法按3大類進行劃分
C: 通過重構,各個類的分工明確,當然還有一些優化的工作可以做
具體部分:
1 : 接下來,開始分離勇士類,命名為Hero, Hero類中應包含用於顯示精靈, 各種屬性(攻擊,生命值和防禦)和勇士的"移動方法”
首先,請大家思考個問題:Hero類是否應該繼承與精靈CCSprite?。 。。但如果看的稍微遠點,就會發現這個方案缺乏靈活性。。。CCNode. 這樣針對Hero主體的縮放,移動,執行動作,顯示隱藏等操作都會影響Hero內部的所有顯示節點
2: 前面一節中我們抽出了Hero類。僅剩餘下面幾個部分。。。。。。
大家應該看出,後面2項也可以從遊戲中分離出來,因為他們並不屬於遊戲內容相關的物件,可以把他們歸結為控制層面的一部分。因此最好建立個ControlLayer來統一管理相關的按鈕。(不明白, 不是也屬於UI部分/消除的GameLay)
-------------------------------------------------------------------
1: 程式碼重構: 對老的程式碼,重新整理,劃分
2: 一般遊戲中分數,時間,遙感器,小地圖等元素。對於這些元素最好是單獨放到一個層中 <Cocos2d權威指南> 例如: 消除中的 倒計時 得分 3:角色扮演遊戲(RPG,英文全稱Role Play Games)是一種遊戲,在遊戲中,玩家扮演虛擬世界中的一個或者幾個特定角色在特定場景下進行遊戲。角色根據不同的遊戲情節和統計資料(例如力量、靈敏度、智力、魔法等)具有不同的能力 ————————————————— 基礎———不會的— 1:我居然: 建立星星(StarSprite.lua)在star內部建立。 老師的建立子彈 在StarSprite.lua中 local _bg = cc.Sprite:create("img/green.png”); 2: getIndexX/getIndxY() 分不清寫在類內部,還是放在建立類物件的部分 如:StarArry StarSprite類 個人理解:除了建立類物件外,所有與本類相關內容放在類內部
3: 為啥 GameLayer WinLayer建立的物件不用設定位置,。 而Matrix中建立就要指定位置。 個人理解: 依據實際需要,如果位置事先確定,就直接在類內部設定Ok .or放在外面(StarArry中for迴圈建立星星)
1: 程式碼重構: 對老的程式碼,重新整理,劃分 2: 一般遊戲中分數,時間,遙感器,小地圖等元素。對於這些元素最好是單獨放到一個層中<Cocos2d權威指南> 例如: 消除中的 倒計時 得分 3:角色扮演遊戲(RPG,英文全稱Role Play Games)是一種遊戲,在遊戲中,玩家扮演虛擬世界中的一個或者幾個特定角色在特定場景下進行遊戲。角色根據不同的遊戲情節和統計資料(例如力量、靈敏度、智力、魔法等)具有不同的能力 ————————————————— 基礎———不會的— 1:我居然: 建立星星(StarSprite.lua)在star內部建立。 老師的建立子彈 在StarSprite.lua中 local _bg = cc.Sprite:create("img/green.png”); 2: getIndexX/getIndxY() 分不清寫在類內部,還是放在建立類物件的部分 如:StarArry StarSprite類 個人理解:除了建立類物件外,所有與本類相關內容放在類內部
3: 為啥 GameLayer WinLayer建立的物件不用設定位置,。 而Matrix中建立就要指定位置。 個人理解: 依據實際需要,如果位置事先確定,就直接在類內部設定Ok .or放在外面(StarArry中for迴圈建立星星)
2: 一般遊戲中分數,時間,遙感器,小地圖等元素。對於這些元素最好是單獨放到一個層中 <Cocos2d權威指南> 例如: 消除中的 倒計時 得分 3:角色扮演遊戲(RPG,英文全稱Role Play Games)是一種遊戲,在遊戲中,玩家扮演虛擬世界中的一個或者幾個特定角色在特定場景下進行遊戲。角色根據不同的遊戲情節和統計資料(例如力量、靈敏度、智力、魔法等)具有不同的能力 ————————————————— 基礎———不會的— 1:我居然: 建立星星(StarSprite.lua)在star內部建立。 老師的建立子彈 在StarSprite.lua中 local _bg = cc.Sprite:create("img/green.png”); 2: getIndexX/getIndxY() 分不清寫在類內部,還是放在建立類物件的部分 如:StarArry StarSprite類 個人理解:除了建立類物件外,所有與本類相關內容放在類內部
3: 為啥 GameLayer WinLayer建立的物件不用設定位置,。 而Matrix中建立就要指定位置。 個人理解: 依據實際需要,如果位置事先確定,就直接在類內部設定Ok .or放在外面(StarArry中for迴圈建立星星)
----------------------------------------------------------------------------
tou: 你先把基礎的弄好再說, 魔獸世界
1:C語言 物件呼叫。 指標用-> (一個obj 一個地址 — 老王)
例子: Star * _star = new Star();if(_star && _star->initWithFile(“c字串會自動化為C++"))
2: 到現在還不清楚: 一個Node的位置,是錨點相對於左下角auto _sp = Sprite::create("share.png”); — 出現在左下角
this->addChild(_sp);
_sp->setScale(3.0f);
// _sp->setPosition(Point(visibleSize.width/2, visibleSize.height/2));
auto _layer = LayerColor::create(Color4B::RED, 300, 300);
this->addChild(_layer); —— 層依舊是的
1: 程式碼重構: 對老的程式碼,重新整理,劃分 2: 一般遊戲中分數,時間,遙感器,小地圖等元素。對於這些元素最好是單獨放到一個層中<Cocos2d權威指南> 例如: 消除中的 倒計時 得分 3:角色扮演遊戲(RPG,英文全稱Role Play Games)是一種遊戲,在遊戲中,玩家扮演虛擬世界中的一個或者幾個特定角色在特定場景下進行遊戲。角色根據不同的遊戲情節和統計資料(例如力量、靈敏度、智力、魔法等)具有不同的能力 ————————————————— 基礎———不會的— 1:我居然: 建立星星(StarSprite.lua)在star內部建立。 老師的建立子彈 在StarSprite.lua中 local _bg = cc.Sprite:create("img/green.png”); 2: getIndexX/getIndxY() 分不清寫在類內部,還是放在建立類物件的部分 如:StarArry StarSprite類 個人理解:除了建立類物件外,所有與本類相關內容放在類內部
3: 為啥 GameLayer WinLayer建立的物件不用設定位置,。 而Matrix中建立就要指定位置。 個人理解: 依據實際需要,如果位置事先確定,就直接在類內部設定Ok .or放在外面(StarArry中for迴圈建立星星)