最佳實戰:用Cocos2d-x3.x和C++11編寫2048遊戲以及遊戲AI(全民2048 Android版上線啦)

booirror發表於2015-05-05

話說,年僅19歲的帥氣小夥子Gabriele Cirulli於2014年3月完成併發布在github上,遊戲設計來自於《1024》,而《1024》靈感來源於《Threes!》的移動端遊戲。然而遊戲飆升的人氣超乎他的想象,人們忘記了Flappy Bird, 2048成了 網路上“最上癮的東西”。

我是完全為了熟悉Cocos2d-x3.x版本,才寫這個遊戲的。這個遊戲的玩法如下:

該遊戲使用方向鍵讓方塊上下左右移動。如果兩個帶有相同數字的方塊在移動中碰撞,則它們會合併為一個方塊,且所帶數字變為兩者之和。每次移動時,會有一個值為2或者4的新方塊出現。當值為2048的方塊出現時,遊戲即勝利。

遊戲難度在於移動加合併的操作,其實也不難了,只是我覺得寫的不優雅。要是不用lambda,那會更加難看。其他功能實現起來都沒啥說的。當然還有很多地方是可以完善的。

最後我還給這個遊戲寫了個AI,理論上可以達到很高的成功率。當時是晚上8點測試的,跑到晚上12點,平均一局需要移動1000次,如果每0.5秒一次,500秒一局,即一局需要大概8分鐘。因為有出現的不僅僅是2,還可能是4,而且失敗時肯定不需要這麼多時間,不管怎樣,測的結果不是很好。我想主要是因為效率不高吧,計算量較大,其次是跟電腦配置有關係了,畢竟每一步的時間間隔不能太久,測試時間不夠長也是個原因。這個留個以後改進吧。

最後,附上圖片和原始碼:



************************全民2048上線啦*************************


原始碼地址:https://github.com/booirror/game-2048

APK下載:http://apk.hiapk.com/appinfo/com.uboxsoft.puzzle/2

注:

1. 有多名網友反映,移動或合併後位置錯誤。我電腦上很正常,根據網友的反映,貌似移動結束後坐標變成0,0了,這問題終於解決了,是cocos版本導致的。我用的是3.3版本,最新版由於底層函式做了修改,從而出現了這個問題。程式碼稍後我會更新到github上(6月8號之前)。對此,我很感謝其中一位網友,名字就不說了,不確定他是否願意透露名字。

2. 適配問題。這個我承認是程式碼沒寫好,使用FIXED_WIDTH並修改相應座標可以達到滿意效果。

3. 想編譯出Android版的同學,需要自己修改Android.mk檔案。

(完)


相關文章