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