1. 程式人生 > >android 專案實訓—貪吃蛇Snake(一)

android 專案實訓—貪吃蛇Snake(一)

一、遊戲介紹: 貪吃蛇是一個古老而經典的遊戲,講的是在一個美麗的花園裡,有一隻愛吃蘋果的小蛇,它每吃一個蘋果都會變得更大更快,只是它有個致命的弱點,如果它想逃出花園或者一不小心咬到自身就會立刻死亡。作為玩家,你的目標是操縱小蛇吃掉更多的蘋果而不死掉。

二、遊戲截圖:

a、開始畫面image

b、遊戲暫停image

c、遊戲結束
image

三、程式碼總體分析

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

相關推薦

android 專案貪吃Snake

一、遊戲介紹: 貪吃蛇是一個古老而經典的遊戲,講的是在一個美麗的花園裡,有一隻愛吃蘋果的小蛇,它每吃一個蘋果都會變得更大更快,只是它有個致命的弱點,如果它想逃出花園或者一不小心咬到自身就會立刻死亡。作為玩家,你的目標是操縱小蛇吃掉更多的蘋果而不死掉。 二、遊戲截

ANDROID專案中嵌入高德地圖配置環境+顯示地圖

最近在做專案中嵌入高德地圖的工作,覺得有必要記錄一下嵌入過程,雖然高德官方給說明文件了,但有寫並不明確需要去查類,查資料,再此把過程記錄一下。 一、顯示地圖 1.配置AndroidManifest.xml檔案 可能需要如下許可權: <!--允許程式開啟網路套接字-

自然語言交流系統 phxnet團隊 創新 個人博客

app new nbsp onclick ogl 交流 dial end 兩個 訊飛的語音sdk是需要申請的,地址是:http://dev.voicecloud.cn/developer.php?vt=1 。申請一個訊飛的開發者賬號,然後申請一個appid,申請的時候需要填

自然語言交流系統 phxnet團隊 創新 個人博客 十三

stream try except live asc acc 詳細 mmu return 關於java socket的一些總結: Java Socket通信有很多的時候需要我們不斷的學習。方面效率雖然不及C與C++但它以靈活語言優勢,為大家廣為使用。 本文就對在

自動化構建Android專案 ---- Jenkins自動化部署學習筆記

  上篇文章跟大家分享了在Windows上安裝Jenkins的方法,這篇文章來跟大家分享一下利用Jenkins自動化構建Android專案: 一、所需準備: Android專案上傳至版本管理平臺,這裡我準備了Github上的Android專案https://github.co

網路綜合佈線工程技術室解決方案轉載

一、網路綜合佈線技術理論學習內容: 1、綜合佈線系統認知。   2課時。展示裝置為綜合佈線工程教學模型。 (1)認識並理解綜合佈線系統工程的七個部分:工作區、配線子系統、幹線子系統、建築群子系統、裝置間、進線間、管理。 (2)認識並理解網路綜合佈線系統工程物理結構和佈線方式

Android 項目開發基礎再回顧

android1,主activity_splash:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro

React-Native系列Android——Native與Javascript通信原理

from 直接 最新 一點 明顯 rem 負責 receive esp React-Native最核心的是Native與Javascript之間的通信,並且是雙向通信

Linux 文件管理命令語法、參數、例全匯總

rwx 界面 endif 群組 new 才有 func {} ans 命令:cat cat 命令用於連接文件並打印到標準輸出設備上。 使用權限 所有使用者 語法格式 cat [-AbeEnstTuv] [--help] [--version] fileName 參數

Android 6.0 指紋識別功能學習----阿冬專欄!!!

轉載自:http://www.cnblogs.com/changyuet/p/5535082.html     由於畢設需要設計增強的身份認證(生物特徵認證方式),所以需要學習指紋識別相關的android6.0功能,進而設計自己的畢設:支援媒體可信通訊的andro

Android 如何從應用深入到Framework

今天,明哥想跟大家聊聊,如何從應用開發,轉向Framework開發。 系統應用開發,現在來說,已經開始脫離系統,單獨拿出來開發,系統定製介面,已提供給應用呼叫,用來增強功能。 原生的桌面,撥號,設定,已經沒法做出差異化優勢,因此都費盡心機,來進行應用深度開發。 對於之前

Android RecyclerView優雅實現複雜列表佈局

轉載:https://blog.csdn.net/huang3513/article/details/62044688 前言 在多彩佈局不斷呈現的今天,多佈局混合排布成為一個時尚,今天就結合Holder實現RecyclerView複雜列表佈局。  效果圖如下(三種佈局): 

Android系統播放器MediaPlayer原始碼分析

前言 對於MediaPlayer播放器的原始碼分析內容相對來說比較多,會從Java->JNI->C/C++慢慢分析,後面會慢慢更新。另外,部落格只作為自己學習記錄的一種方式,對於其他的不過多的評論。 MediaPlayerDemo public class MainA

Android跨程序通訊Binder原理分析

文章目錄 1. Linux程序基礎 1.1 程序隔離 1.2 使用者空間/核心空間 1.3 核心模組/驅動 1.4 圖解 2. 為什麼要使用Binder 2.1 安全方面 2.2 效能方面(一

ArcGIS for Android 100.3的學習與應用 如何繪製點和線?

平時工作中,我們接觸到的地圖類開發平臺有很多,最常用的有高德,百度,騰訊地圖。而且它們都有自己的開發者平臺和文件供我們使用。基本能滿足我們的業務需求。 由於公司裡的專案會涉及一些地圖資料統計和展示方面的需求,同時也會發布一些地圖服務,所以選擇了使用在地圖方面比較牛逼的ArcGIS。 把平時遇

Android資料持久化—SQLite資料庫-建立資料庫

       在編寫軟體的過程中,我們通常會在移動裝置的本地儲存一些資料,這些資料如何儲存,就是使用到一個android 端的輕量級資料庫SQLite,在資料儲存大家都應該使用過SharedPreferences,這個東西只適合儲存一些簡單的資料,但是到了

Android四大元件之Service全面解析

 在小杰的上一篇博文中給大家講了一下Android四大元件之一的Activity,也是最重要的,這一篇文章,給大家講一下Service。 什麼是Service  Service是Android的四大元件之一應用廣泛,它是一個能在後臺進行一個長時間的操作並且不提供使用者介面

Android 開發藝術探索》讀書筆記——Activity 的生命週期和啟動模式

Activity 作為 Android 四大元件之首,它作為和使用者互動的介面,在開發中使用得可謂極其頻繁,所以弄清楚 Activity 的生命週期和啟動方式是非常重要的,要牢記。 1 Activity 的生命週期全面分析 1.1 典型情況下的生命週期分析 onCrea

android java 與 native互動 基礎學習

javap 與javah的用法 javap 的用法: cd 到 class 所在的目錄: javap -classpath . -s Bean(類名) java h的用法一: native 所在的資料夾。ExampleUnitTest 資料夾所在的包

Android開發常見異常與錯誤系列

一、前言 這系列文章是自己在平時開發過程中遇到的問題。之前只是記在雲筆記上面,現在整理一下,發出來共享。 ps:像那些什麼沒有註冊Activity呀,許可權呀等最基本的就不再贅述。 二、ADB連線異常 有時我們發現,即使自己從工作管理員裡面把adb.ex