【正文】
rocedures used and controls, including the Drawable Canvas, Thread, and so on. Describes the general use, as well as the program is how to use these classes to the development of the game. The ages of the classic works transplantation in this program to the phone up, to provide application software for the more popular hardware platforms. These will be well positioned to meet future demand for mobile games. Devour the snake game based on the Android platform, prepared to meet the entertainment needs of the general mobile phone users.Key words: Android system。介紹了這些類的一般的使用方法,以及本程序是如何使用這些類來進(jìn)行游戲的開發(fā)的。 本科畢業(yè)設(shè)計(jì)(論文) 題目名稱: 基于Android貪吃蛇游戲 學(xué) 院: 計(jì)算機(jī)科學(xué)技術(shù) 專業(yè)年級: 計(jì)算機(jī)科學(xué)與技術(shù)08(師)級 學(xué)生姓名: 班級學(xué)號: 2班28號 指導(dǎo)教師: 二○一二 年 六 月 六 日摘 要本課題是利用java語言在Android平臺上進(jìn)行手機(jī)游戲的開發(fā),由于本人知識的有限,以及客觀條件的限制,本人打算開發(fā)一個(gè)單機(jī)版的游戲。本程序?qū)⒗仙俳砸说慕?jīng)典作品移植到手機(jī)上來,為更流行的硬件平臺提供應(yīng)用軟件。 Gluttony snake game。Android平臺的開放性等特點(diǎn)既能促進(jìn)技術(shù)(包括平臺自身)的創(chuàng)新,又有助于降低開發(fā)成本,還可以使運(yùn)營商能非常方便地制定自己的特色化的產(chǎn)品。全球?yàn)閿?shù)眾多的移動電話用戶從未使用過任何基Android 的電話。1. 開放性Google與開放手機(jī)聯(lián)盟合作開發(fā)了 Android,這個(gè)聯(lián)盟由包括中國移動、摩托羅拉、高通、宏達(dá)電和 TMobile 在內(nèi)的30多家技術(shù)和無線應(yīng)用的領(lǐng)軍企業(yè)組成。4. 智能虛擬鍵盤虛擬鍵盤的出現(xiàn)意味著基于Android 。Nokia的Symbian系統(tǒng)在Android系統(tǒng)的沖擊下,正在從手機(jī)市場中的王者慢慢被擠下來?,F(xiàn)階段使用較廣泛大家也相對熟悉的手機(jī)操作系統(tǒng)是由諾基亞公司主導(dǎo)推出的Symbian 操作系統(tǒng)。系統(tǒng)操作占用大概240MB的存儲器空間。目前國內(nèi)還沒有自主研發(fā)并商品化的手機(jī)操作系統(tǒng)。目前國內(nèi)外手機(jī)應(yīng)用服務(wù)方向主要有基于地理位置的信息服務(wù)(Location Based Service LBS)它是通過電信移動運(yùn)營商的無線電通訊網(wǎng)絡(luò)(如GSM網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動終端用戶的位置信息(地理坐標(biāo),或大地坐標(biāo)),在GIS(Geographic Information System,地理信息系統(tǒng))平臺的支持下,為用戶提供相應(yīng)服務(wù)的一種增值業(yè)務(wù)。 手機(jī)辦公類軟件在手機(jī)上也正日趨完善,在手機(jī)上編輯查看各類文檔已經(jīng)實(shí)現(xiàn),在Android平臺上的QuickOffice就是這樣的軟件。接著,發(fā)揮物聯(lián)網(wǎng)的優(yōu)勢,借助無處不在的傳感器,可以感知并分享到周圍世界的海量信息,這些信息將在“云端”得到整合,幫助用戶及時(shí)、準(zhǔn)確的獲得氣息信息、交通路況。若在基本功能上進(jìn)而實(shí)現(xiàn)界面的美化,則還需要更好的美術(shù)人員協(xié)助實(shí)現(xiàn)。(5) SQLite數(shù)據(jù)庫,用于結(jié)構(gòu)化的數(shù)據(jù)存儲。圖21 Android操作系統(tǒng)的體系結(jié)構(gòu)圖(1) 應(yīng)用程序。(5) Linux內(nèi)核。當(dāng)用戶從主屏幕或應(yīng)用程序啟動器選擇一個(gè)應(yīng)用程序時(shí),就會開始一個(gè)動作。Android的圖形界面分為三層:底層是Activity。它包括必需的類名和應(yīng)用程序能夠處理的事件類型,以及運(yùn)行應(yīng)用程序所需的許可。 面向?qū)ο蟮脑O(shè)計(jì)方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,這種方法的基本原理是,使用現(xiàn)實(shí)世界的概念抽象地思考問題從而自然地解決問題。 面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則,就是分析、設(shè)計(jì)和實(shí)現(xiàn)一個(gè)軟件系統(tǒng)的方法和過程.盡可能接近人們認(rèn)識世界解決問題的方法和過程,也就是使描述問題的問題空間和描述解法的解空間在結(jié)構(gòu)上盡可能一致。 開發(fā)工具及環(huán)境簡介 開發(fā)工具Eclipse簡介Eclipse是一個(gè)開放源代碼的、與NetBeans、Sun ONE Studio和Borland Jbuilder類似的一種基于Java的整合型可擴(kuò)展開發(fā)平臺,也是目前最著名的開源項(xiàng)目之一,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開發(fā)工具(Java Development Tools,JDT)。它主要由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和Eclipse技術(shù)項(xiàng)目三個(gè)項(xiàng)目組成,具體包括四個(gè)部分組成—— Eclipse Platform、JDT、CDT支持C開發(fā)、PDE用來支持插件開發(fā),Eclipse Platform則是一個(gè)開放的可擴(kuò)展IDE,提供了一個(gè)通用的開發(fā)平臺。因?yàn)楸卷?xiàng)目的開發(fā)工具是Eclipse,所以還需要安裝ADT(Android Development Tools)插件。(1) 利用方向鍵來改變蛇的運(yùn)行方向。因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。2. 運(yùn)行穩(wěn)定一款軟件設(shè)計(jì)得不夠好,那么就有可能在運(yùn)行的時(shí)候出現(xiàn)一些不可預(yù)料的錯(cuò)誤從而造成軟件崩潰。蛇不能向相反方向移動,例如蛇頭朝南時(shí)則不能向北移動。游戲的主界面架游戲圖形區(qū)域界面游戲控制按鈕界面圖13 游戲主界面 游戲控制模塊 游戲控制模塊主要通過手機(jī)鍵盤上的按鈕來控制游戲的開始、游戲的退出這兩個(gè)功能以及控制游戲分?jǐn)?shù)變化。即是:在它之上有另外一個(gè)activity。當(dāng)一個(gè)activity從這個(gè)狀態(tài)轉(zhuǎn)變到另一個(gè)狀態(tài)時(shí),它被以下列protected方法所通知。2. 實(shí)現(xiàn)游戲暫停在Activity的生命周期中,有一個(gè)onPause(),如果有來電或是其它事件中斷,這時(shí)應(yīng)該把當(dāng)前狀態(tài)保存。View是所有與用戶交互的組件的Widgets的基類(Buttons,textField等),View的子類ViewGroup是layouts類的基類,layouts類可以包含其他的View/ViewGroup組件并且定義展示的屬性。4. 刷新蛇的當(dāng)前位置的方法主要用于刷新蛇的當(dāng)前位置。根據(jù)方向鍵,改變蛇頭的x、y的值,即改變方向。 (PLAY)。 right = (ImageButton)findViewById()。 ((1, 1, 255, 1))。 } else { // We are being restored Bundle map = (ICICLE_KEY)。 break。onDraw()protected void onSizeChanged(int w, int h, int oldw, int oldh) { mXTileCount = (int) (w / mTileSize)。 (0, 0, mTileSize, mTileSize)。 } } } public void setTile(int tileindex, int x, int y) { mTileGrid[x][y] = tileindex。SnakeView的方法摘要。 ()。 } private void initSnakeView() { setFocusable(true)。 (new Coordinate(5, 7))。 mScore = 0。 } return rawArray。 return map。應(yīng)根據(jù)開發(fā)各階段的需求、設(shè)計(jì)等文檔或程序的內(nèi)部結(jié)構(gòu)精心設(shè)計(jì)測試用例,并利用這些實(shí)例來運(yùn)行程序,以便發(fā)現(xiàn)錯(cuò)誤。 本系統(tǒng)主要是給用戶用的,用戶不需要了解程序的流程,只要能完成他想要得功能就行了。目的是將經(jīng)過單元測試的模塊構(gòu)成一個(gè)符合設(shè)計(jì)要求的軟件結(jié)構(gòu)。(2)游戲界面顯示是否正常,游戲邊框,蛇頭以及豆是否全部顯示。此時(shí),游戲會結(jié)束。10. 壓力測試(1)貪吃蛇每次開始后直接撞墻,測試50次,游戲不會報(bào)任何BUG。經(jīng)過很久的努力,終于在6月份完成了畢業(yè)論文,在這次畢業(yè)論文的寫作過程中,我擁有了無數(shù)難忘的感動和收獲。每次在遇到困難的時(shí)候,我也得到了同學(xué)的幫助,共同商量相關(guān)專業(yè)問題,這種交流對于即將面臨畢業(yè)的我們來說是一次很有意義的經(jīng)歷,大學(xué)四年都一起走過,在最后我們可以聚在一起討論學(xué)習(xí),研究專業(yè)問題,進(jìn)而更好地了解我們每個(gè)人的興趣之所在,明確我們的人生理想,進(jìn)而在今后的生活和工作中更好地發(fā)揮自己的優(yōu)勢,學(xué)好自己選擇的這項(xiàng)專業(yè)技術(shù),讓自己在這條路上的明天會更好。 Privacy, IEEE,2010,7(1).[13] Sandeep Kumar. Location Based Services using Android[C]. Internet Multimedia Services Architecture and Applications (IMSAA), IEEE International Conference ,2011.附 錄1. 安裝使用說明書系統(tǒng)設(shè)計(jì)所選的環(huán)境是Eclipse。 public Coordinate(int newX, int newY) { x = newX。 for (int x = 0。 x ++) { for (int y = 0。 } public boolean equals(coordinate other) { if (x == amp。軟件環(huán)境 Eclipse、java。沒有王雙立老師的幫助也就沒有今天的這篇論文。我將這一困難告訴了指導(dǎo)老師。結(jié) 論在本游戲的編寫過程中,我遇到了許多問題,首先要自己先自學(xué)Android的游戲編程,雖然和java的思想差不多,但是Android上有許多控件和類在java上沒有的,在這方面我遇到了很大的難題。屏幕應(yīng)該顯示10分。(2)同時(shí)按兩個(gè)或兩個(gè)以上方向鍵(上、下、左、右),蛇頭依然按照上下左右方向移動,無異常。(3)確認(rèn)測試(validation testing)。 測試的步驟軟件測試實(shí)際上分成四步:單元測試、組裝測試、確認(rèn)測試和系統(tǒng)測試,它們按順序進(jìn)行。硬件測試、網(wǎng)絡(luò)測試可以根據(jù)具體的性能指標(biāo)來進(jìn)行,此處所說的測試更多的是指軟件測試。然而,在測試之前的各階段中都可能在軟件產(chǎn)品中遺留下許多錯(cuò)誤和缺陷,如果不及時(shí)找出這些錯(cuò)誤和缺陷,并將其改正,這個(gè)軟件產(chǎn)品就不能正常使用,甚至?xí)?dǎo)致巨大的損失。 (mAppleList, coordArrayListToArray(mAppleList))。 int[] rawArray = new int[count * 2]。 (new Coordinate(3, 7))。 resetTiles(4)。 sendMessageDelayed(obtainMessage(0), delayMillis)。2. 設(shè)置提示信息的方法通過程序判斷動態(tài)地設(shè)置用戶提示信息,如游戲結(jié)束。 for (int x = 0。 mTileArray[key] = bitmap。 mXOffset = ((w (mTileSize * mXTileCount)) / 2)。 } } } TileView類的詳細(xì)設(shè)計(jì)TileView是游戲的界限,即蛇頭若觸碰到界限則游戲結(jié)束。 } else { ()。 down = (ImageButton)findViewById()。 (this)。 ((0, 0, 255, 0))。public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 程序主結(jié)構(gòu) 本次所設(shè)計(jì)貪吃蛇游戲的程序主結(jié)構(gòu)如圖45所示。不必重寫所有所有的方法,可以僅僅重寫onDraw()。這就使用onSaveInstanceState實(shí)現(xiàn)保存當(dāng)前狀態(tài)。3. 實(shí)現(xiàn)蛇的移動