昨天沒事寫了個三消玩玩。已經(jīng)實現(xiàn)的功能:
1、連續(xù)3個及以上橫豎消除方塊;
2、連續(xù)4個及以上生成一個道具;(只做了消除一行或一列的條紋道具)
其他功能就沒有實現(xiàn)了,下面我簡單說下思路,希望給需要的朋友一點幫助。
GameScene:游戲場景
GameBox:游戲視圖View。負責管理GameTitle
GameTile:可消除的方塊
GameDefine:一些游戲的配置。
一、GameScene
1、首先GameScene初始化的時候,創(chuàng)建GameBox,并且鎖住GameBox,阻止玩家操作界面上的方塊。
2、當onEnterTransitionDidFinish之后,讓GameBox check是否有消除對象。
3、GameScene的touch方法只負責GameTile的交換。每次交換之后,讓GameBox check是否有消除對象。
二、GameTile
這里要說明下,GameTile是放置在GameBox上的每個方塊,玩家交換GameTile實際上是交換的GameTile內(nèi)部的sprite,GameTile本身不移動位置。
class GameTile: public Node { public: int x; int y; int value; // 1 - 6 6種方塊 int comboValue; // 1:橫向消除道具, 2:豎向消除道具 Sprite* sprite; // 方塊的顯示sprite, public: GameTile(int ax,int ay); ~GameTile(); bool nearTile(GameTile* other tile); // 是否相連 void trade(GameTile* other tile); //交換gameTile,實際上是交換的sprite void changeComboTile(int orient); //變身成combo道具 Point pixPosition(); //返回x,y對應的像素坐標,用于交換sprite void refreshDebugInfo(); };
三、GameBox
1、首先生成所有的GameTitle,新生成的GameTile沒有sprite。
2、GameScene onEnterTransitionDidFinish之后會調(diào)用GameBox check方法,會發(fā)現(xiàn)所有GameTitle為空,所以開始執(zhí)行填充sprite。
3、在GameScene中用戶交換gameTile之后,也會觸發(fā)GameBox check,GameBox check檢查是否有可消除對象,沒有的話則通知GameScene還原交換的gameTile,有消除對象,則GameBox 消除對應的sprite,并填充新的sprite并執(zhí)行check。
四、最后提供源代碼:
代碼是基于cocos2d-x-3.0alpha0版本的,請下載后放在projects目錄運行。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com