屌絲也能開發安卓版2048(App Inventor)


想編寫安卓游戲。java太難。來試試App Inventor。盡管有人覺得他是中學生的玩具,可是也能編寫2048這種火爆游戲,不須要太復雜的算法。


整個游戲有幾個模塊:
一、游戲初始化

數列轉化為圖形。使用了canvas和精靈,相相應list,這里注意精靈位置是固定的,僅僅是更改圖片,多少分,就對於n.jpg,0分是底色圖片。左右移動,使用了flung推斷,絕對值推斷,水平速度和垂直速度哪個大。用來推斷是左右移動還是上下移動。


二、計分模塊

一般計分在合並處添加,最高分用了tiny db。游戲結束時進行推斷。游戲開始時計分清0


三、移動模塊(核心)
移動模塊是4*4矩陣的移動,先簡化解決左右移動,進一步簡化為4*1的矩陣,這里用到list。


首先推斷0000,不移動。true、false推斷。

其次推斷向右移動。通過觀察發現規律,2000變為0002,2480變為0248,2040變為0024,第4位是0。去掉后放到第1位。

循環最多3次。

假設第4位不是0,從第3位是0。最多循環2次。第2位是0,1次。相同的能夠解決向左移動。

然后擴展到4*4.用foreach循環。

攻克了左右移動,開始解決上下移動。

左右移動本質上是矩陣的旋轉。如1234

1234
1234
1234
變為
4444
3333
2222
1111
因此能夠通過行和列的轉換,得到新的list。上下移動變成左右移動。注意的是每一個方向移動都會同一時候影響列數組和行數組,因此要相互轉換。


四、合並模塊


合並模塊注意下面規則,每次僅僅合並一次,如2222,向右合並為0044。不是合並為8。

0222向右合並為0024。

合並主要是推斷12,23,34位的list是否同樣。

如34位同樣的向右合並,4位翻倍,3位移除,然后再1位上加0。

這里須要和后面的積分模塊相關聯,合並的分數加上。



五、隨機添加2或4模塊


2和4的選取能夠通過概率設置,比較簡單


插入位置的選取實際上在全部0的位置隨機選取。這里設置zerolist保存全部為0的位置,保存依照1-16號設置。模塊為list0。如5號表示第2行第1列為0。用到了商和余數的推斷。模塊為add。


六、游戲結束推斷

這里沒有設置游戲勝利,即達到2048游戲仍然繼續,游戲結束的條件有3個。


1是沒有空格。即zerolist為空
2橫向不能合並
3縱向不能合並
都為真時彈出選擇框。
模塊對於為nomerge和gameover


aia文件和apk下載http://bbs.appinventor.com.cn/thread-3604-1-1.html



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM