90年经典坦克大战(cocos2d-x)
語言:c++
游戲引擎:cocos2d-x
一、項目介紹:
這個游戲我實現(xiàn)了90年經(jīng)典坦克大戰(zhàn)的部分功能
代碼和圖片資源鏈接https://download.csdn.net/download/yx______/10664180
二、 主要設(shè)計:
1.地圖設(shè)計
2.坦克設(shè)計
3.子彈設(shè)計
4.數(shù)據(jù)管理
1.地圖設(shè)計 : 地圖從txt文檔里面導(dǎo)入,通過stringstream來轉(zhuǎn)化,把數(shù)字導(dǎo)入map數(shù)組里面,然后遍歷創(chuàng)建地圖元素,通過switch語句,不同的地圖元素層級不一樣
2.坦克設(shè)計:坦克我寫了個坦克類,然后派生出己方坦克類,敵方坦克類,大部分共有的函數(shù)都在坦克類里面。
3.子彈設(shè)計:發(fā)射子彈時,子彈管理類會實例化一個子彈對象,子彈碰到東西后,會進(jìn)行碰撞檢測,如果坦克爆照后,會有一個爆照的效果,是一個7幀的動畫,然后會顯示獲得的分?jǐn)?shù),否則就只有一個3幀的動畫,爆照效果小一點(diǎn)。
4.數(shù)據(jù)管理:舞臺類定義了一個精靈類型敵方坦克容器,當(dāng)一個新坦克被創(chuàng)建時,容器的最后一個元素會被清除。玩家坦克類定義了一個靜態(tài)成員生命,每關(guān)進(jìn)去都是4條命。選擇關(guān)卡類有一個靜態(tài)成員關(guān)卡的數(shù)字,每次離開游戲場景時,這個值會加一。坦克管理類定義了一個地方坦克的數(shù)組,存儲各種類型的坦克的數(shù)目,玩家坦克類定義了靜態(tài)成員分?jǐn)?shù),每次敵方坦克死亡后都會加分,結(jié)算界面會與本地存儲的最高紀(jì)錄相比較,會更新
三、難點(diǎn)攻克
1.坦克移動
2.坦克動畫
3.坦克碰撞檢測
4.子彈碰撞檢測
1.坦克移動:定義了一個全局變量類,這個類定義了bool型各個鍵的靜態(tài)變量,在游戲場景類
按住上鍵后會把上鍵對應(yīng)的變量設(shè)為true,停止按住時會設(shè)為false,然后在玩家
坦克類,每一幀都會檢測各個變量的值,如果為true,就會讓坦克執(zhí)行對應(yīng)的操
作。坦克速度設(shè)置的為1.5,移動時每一幀都會移動1.5個距離,坦克的圖片每一
幀都會更新,轉(zhuǎn)換方向時,從圖集中調(diào)用圖片時會換成對應(yīng)方向的圖片,讓后就
會移動。
2.坦克動畫:坦克在移動的時候有一個移動的動畫效果,一般的坦克有2幀。定義了一個成員來
記錄當(dāng)前顯示的幀數(shù),每次移動的時候幀數(shù)會加一,當(dāng)達(dá)到最大值時,又變回1。
地方最高級的坦克稍微麻煩一點(diǎn),它還有幾種顏色,等級4是銀、綠交替,等級3是
銀、黃交替,等級2是黃、綠交替,等級1是銀,多弄些圖片素材在圖集中也就行了。
坦克不移動時,幀數(shù)不變,就不會有移動的效果了。
3.坦克碰撞檢測:(1)坦克與條坦克碰撞檢測:碰撞檢測函數(shù)在坦克類里面,游戲場景類里面有
一個坦克的容器,與容器里面的每個坦克都比較一下坐標(biāo)就行了。(2)坦克與地圖碰撞檢測:坦克類
有一個成員方向,然后通過舞臺類的一個判斷函數(shù)判斷接下來去的那個格子是不是可以行走。
4.子彈碰撞檢測:(1)子彈與坦克碰撞檢測:判斷子彈是由玩家還是敵方發(fā)出的
然后看碰到的坦克是玩家還是敵方,做相應(yīng)的判斷就行。(2)子彈與子彈碰撞檢測:
判斷是玩家的子彈還是敵方的子彈,敵方的子彈相互之間可以穿過去。
(3)子彈與地圖的碰撞檢測。與地圖邊界的碰撞檢測:判斷子彈的x,y值是否達(dá)到邊界,達(dá)到邊界后讓其爆炸。
與地圖障礙物的碰撞檢測:判斷子彈接下來去的格子是否可以打,然后執(zhí)行對應(yīng)的函數(shù)。
再就是打半塊磚的問題:用的位運(yùn)算來判斷
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的90年经典坦克大战(cocos2d-x)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python判断题题库大数据技术_智慧树
- 下一篇: 斗鱼弹幕服务器第三方接入协议v1.6.2