想編寫安卓游戲。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 |

四、合並模塊
合並模塊注意下面規則,每次僅僅合並一次,如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