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

來源:互聯網
上載者:User

標籤:2048   安卓   appinventor   

想編寫安卓遊戲,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


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.