1. 程式人生 > >屌絲也能開發安卓版2048(App Inventor)

屌絲也能開發安卓版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