android 專案實訓—貪吃蛇Snake(一)
一、遊戲介紹: 貪吃蛇是一個古老而經典的遊戲,講的是在一個美麗的花園裡,有一隻愛吃蘋果的小蛇,它每吃一個蘋果都會變得更大更快,只是它有個致命的弱點,如果它想逃出花園或者一不小心咬到自身就會立刻死亡。作為玩家,你的目標是操縱小蛇吃掉更多的蘋果而不死掉。
二、遊戲截圖:
三、程式碼總體分析
1、佈局方面:我們使用一個FrameLayout絕對定位,在裡面放兩個和父元素一樣大的子元素,一個是我們自定義的View:snake,這個元素就是遊戲介面,我們通過不停的操縱和重繪該View來完成遊戲互動,一個是在中間有藍色文字的相對定位佈局框架,它用來顯示遊戲狀態。
2、類設計方面:貪吃蛇遊戲使用了三個主類和兩個內部類。
TitleView :一個遊戲貼片(Tile)類,是我們的自定義View。是它實現遊戲畫面的貼片計算、貼片的種類定義、貼片的繪製等和Tile相關的方法。
SnakeView :是TileView的子類,是遊戲的主體類。定義遊戲狀態、操作方式、遊戲規則、初始化遊戲、重新整理檢視、處理打電話導致遊戲暫停時儲存狀態,接收焦點時恢復狀態等等工作都在這個類中進行,注意它還是個View。
MainActivity :遊戲視窗類,負責載入SnakeView,為SnakeView服務。
Snake.RefreshHandler : Handler類,重新整理View
Snake.Coordinate : 座標類,簡化問題
四、程式碼閱讀:
為了你閱讀方便,我對原有程式碼做了簡化、漢化和增加註釋這三件事。你讀起來應該會輕鬆許多。廢話不說了,還是多給你一些時間消化程式碼。我提幾個問題你看程式碼時不妨思考思考。
1、AndroidManifest.xml
1 |
<? xml version = "1.0" encoding = "utf-8" ?> |
請留意android:configChanges=”keyboardHidden|orientation”這句話,這裡有一個onConfigurationChanged()方法的用法問題,你瞭解嗎?是不是自己先研究一下?當然,你也可以等我下一講講解這個問題。
2、res/values/strings.xml
1 |
<? xml version = "1.0" encoding = "utf-8" ?> |
2 |
3 |
貪吃蛇\n按“向上”鍵開始 |
4 |
暫停中\n按“向上”鍵恢復 |
5 |
遊戲結束\n得分: |
6 |
\n按“向上”鍵開始 |
我們在以往很少用Strings.xml來管理字串資源,都是自己寫死進去了,這次為什麼單獨寫了?
3、res/layout/main.xml
1 |
<? xml version = "1.0" encoding = "utf-8" ?> |
4、TileView
001 |
package android.basic.lesson48; |
002 |
|