摘要:本文設計了一個簡單的這種游戲, 采用的語言是JAVA, 在Android平臺上運行, 使用Eclipse制作。
關鍵詞:JAVA; Android; Eclipse; 手機游戲; 線性布局;
Abstract
This paper designed a simple game of this kind, using the language is JAVA, running on the Android platform, using Eclipse production.
Key words:JAVA; Android. The Eclipse; Mobile games; Linear layout;
目錄
1 背景┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅1
2 游戲結構┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅┅2
3 設計目標┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅3
4 游戲的設計原理及實現┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ 4
5 結語┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅5
參考文獻┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅┅6
附錄(略)┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ 7
1 背景
最近幾年以來, Android一直比較熱門, 雖然并不是手機系統里最優秀的, 但卻是大多數手機廠商都在用的, 盡管近幾年小程序正在興起, 但手機應用的開發仍有很強的活力。隨著Android的不斷更新, 其性能也在不斷變好, 在這里做些游戲還是很有價值的。
2 游戲結構
。1) 要有進入游戲的界面, 可以選擇各個模式。
。2) 有專門的游戲界面, 可以控制左右。
。3) 游戲結束后要能顯示分數。
3 設計目標
。1) 在布局文件main.xml中做好主界面, 主界面提供冒險模式和時間模式兩個模式的選擇, 還有提供其他一些諸如音樂, 歷史分數顯示的功能。如圖1所示。
。2) 分別用兩個布局文件gamew.xml和gamet.xml表示無盡模式和時間模式兩個模式的游戲界面, 因為兩個界面雖然相像但是計分方式不一樣, 而用算法實現有些麻煩, 所以索性建立兩個布局文件。
。3) 設計計算游戲結束的算法, 在"飛行器"轉到"小行星"后會提示游戲結束, 這時要根據情況彈出gameoverw.xml或gameovert.xml來顯示本次得分和歷史得分。
。4) 所有布局中設計的按鈕, 圖片框等都要寫好相應的程序讓它能起到相應的功能, 例如點擊"無盡模式"就能打開無盡模式的游戲界面。
。5) 在所有布局界面中, 右上角都提供了音樂的開關, APP把當前音樂的狀態 ("開啟"還是"關閉") 寫在SharedPreferences中, 當APP每次啟動時會讀取SharedPreferences中的數據, 初始化音樂按鈕的狀態。
4 游戲的設計原理及實現
游戲的界面主要通過布局文件來制作, 安卓開發中布局文件和程序代碼同樣重要, 合理運用布局文件可以省去很多代碼, 布局文件存放在res/layout文件夾中。圖片文件, 包括按鈕圖片, 資源圖片, 還有聲音, 都存放在res/drawable-hdpi文件夾中, 程序代碼作為app的主要部分存放在src/com.example.AsteriodBelt文件夾中。
按鈕要具備跳轉功能, 點擊"無盡模式"或"時間模式"任意一個按鈕都能跳轉到相應的界面, 需要首先在布局文件中交代按鈕的位置, 然后在程序代碼中寫跳轉的代碼, 這也是安卓應用的巧妙之處, 通過合理使用布局文件是APP能兼容很多信號的屏幕, 因為手機不像電腦, 手機屏幕尺寸很多, 而應用要是不能根據屏幕尺寸適當改變, 在手機上用起來就很不方便, 這與電腦不同, 電腦屏幕足夠大。具體添加按鈕和添加程序的方法則較簡單, 這里簡單交代一下:
采用線性設計UI:線性布局是安卓開發中最常用的一種布局, 習慣安卓開發的人應該會很習慣使用, 但是初學時總是感覺沒有絕對布局順手, 但是線性布局的嵌套實際比絕對布局, 表格布局等都靈活的多。
布局文件中的按鈕添加方法:
圖1:主界面
按鈕添加在線性布局LinearLayout中而不是直接寫在布局文件中, 這也是安卓應用的一般作法, 安卓應用有線性布局, 絕對布局, 表格布局等很多布局, 但最常用的還是線性布局, 很多資料上也就給出了線性布局的用法, 因為這種布局有很大的靈活性, 可以根據需要在對應的位置添加合適的尺寸的控件, 在添加控件時布局則相當于容器, 這里不再贅述。
程序代碼中的對應部分:
首先聲明這個按鈕, 聲明的名稱可以和布局里的名稱不一樣, 但是在findViewById括號里必須和布局中生命的名字一樣, 當然這里我保持了前后的名稱, 所有的名稱都是wjms, 其他幾個按鈕也類似, 必須先聲明才能使用, 在下面部分的代碼注冊一個內部監聽器處理按鈕按下的事件--即跳轉到"Gamew"Activity中, 其它幾個按鈕也采用這種方式, 只是跳轉的窗口不同這里不再贅述。
在具體的游戲界面中, 首先要生成若干的小行星, 小行星的位置隨機生成, 速度根據具體的小行星設置具體的速度, 使速度很大或很小的小行星都很少, 主要小行星的速度都在一個合理的區間里, 這樣游戲才更有意義一點。
思路如此, 因為要保證生成的小行星在屏幕內而不是屏幕外, 所以我考慮了一個比較完備的算法如上, 在生成小行星后通過一個循環控制小行星按一定速度下落, 其實下落速度根據不同的手機具體的數值也是不一樣的, 我一開始做的時候把數字定的很死, 但是這就造成不同的同學在測試游戲的時候, 小行星下落速度不一樣, 有的人很快, 有的人很慢, 因為不同的手機分辨率, 像素密度不同, 所以后來我都改成了在一定的時間里下落按比例計算的屏幕距離, 所以最后才定下了這個算法。
最后得要有一個判斷游戲是否結束的算法, 需要根據飛船和小行星的位置, 算一下他們是否相撞, 這個算法我從網上搜出來的, 因為自己想了不少時間也沒想好:
看起來有點長, 但是上面一大部分都只占一行, 在Eclipse中看起來還是很清楚的, 通過計算"飛船"和"小行星"四個角的相對位置, 判斷有沒有相撞。
5 結語
本文設計了一個簡單的射擊類游戲, 界面適應安卓手機的不同分辨率, 作為很多程序員寫游戲時喜歡用的題材, 在手機上實現可以讓人學到很多東西, 在手機上玩游戲會比電腦上方便很多, 更有潛力。
參考文獻
[1] Jvaa語言程序設計 (第三版) [M].中國鐵道出版社, 2013.
[2]Android應用開發入門經典[M].人民郵電出版社, 2014.
[3]Android移動開發教程 (項目式) [M].人民郵電出版社, 2013.
附錄
(如您需要查看本篇畢業設計全文,請您聯系客服索。