基于Android平臺的“跳吧”游戲的設(shè)計與實(shí)現(xiàn)_第1頁
基于Android平臺的“跳吧”游戲的設(shè)計與實(shí)現(xiàn)_第2頁
基于Android平臺的“跳吧”游戲的設(shè)計與實(shí)現(xiàn)_第3頁
基于Android平臺的“跳吧”游戲的設(shè)計與實(shí)現(xiàn)_第4頁
基于Android平臺的“跳吧”游戲的設(shè)計與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

系統(tǒng)概述1.1游戲開發(fā)背景及意義1.1.1開發(fā)背景手機(jī)游戲的出現(xiàn)是為了娛樂心神,并隨著移動終端和移動通信網(wǎng)絡(luò)的不斷進(jìn)步,手機(jī)游戲也正在經(jīng)歷由簡單到復(fù)雜的進(jìn)化過程。從全球來看,移動終端的娛樂服務(wù)被認(rèn)為是帶動移動數(shù)據(jù)業(yè)務(wù)快速發(fā)展的重要力量。作為手機(jī)娛樂服務(wù)的重要內(nèi)容之一,近年來,伴隨著移動網(wǎng)絡(luò)和移動終端性能的不斷提高與完善,尤其是智能手機(jī)的出現(xiàn),手機(jī)游戲業(yè)務(wù)呈現(xiàn)快速增長趨勢。近幾年來,手機(jī)游戲快速發(fā)展的同時按內(nèi)容可分為:角色扮演類、冒險類、格斗類、體育競技類、電影改版類、棋牌類、益智類、模擬類。手機(jī)游戲種類已成為人類線上娛樂生活的不可缺少的最主流的載體而存在,各類智能手機(jī)伴隨著PC網(wǎng)絡(luò)游戲?yàn)榛A(chǔ)、3網(wǎng)絡(luò)的不斷變化為措施的條件下大力迅猛發(fā)展手機(jī)網(wǎng)絡(luò)游戲。雖然手機(jī)游戲的用戶越來越多,豐富多彩的游戲種類給玩家?guī)砹烁嗟倪x擇,但是我國的手機(jī)游戲行業(yè)的發(fā)展現(xiàn)狀并不樂觀,主要因素有:(1)高質(zhì)量游戲軟件開發(fā)公司和人才的貧乏,導(dǎo)致無優(yōu)秀游戲打入市場。(2)游戲創(chuàng)意的匱乏。大多游戲都只是一味的跟風(fēng),看到某個游戲成功贏得市場,便改換場景風(fēng)格,人物造型、故事背景等,其游戲核心一沉不變的思維理念會使得玩家產(chǎn)生審美疲勞。隨著Android游戲的商業(yè)模式越來越凸顯,人們對移動終端的休閑娛樂功能需求越來越大,移動終端上的游戲已成為成為現(xiàn)代人們娛樂生活中不可或缺的。游戲應(yīng)用服務(wù)市場促使手機(jī)平臺的不斷提升而日新月異。在未來的游戲產(chǎn)品能否脫穎而出,一切取決于你能玩出什么花樣來,這將激發(fā)更多的開發(fā)商和制作人員攻堅克難創(chuàng)作出高質(zhì)量的作品,而面對手機(jī)游戲自身的趣味性、易掌握性、可中斷性、交互性、游戲商家也將面臨亙古未見得激烈競爭。由此可見,手機(jī)已是人們?nèi)粘I钪忻懿换蛉钡男蓍e娛樂方式。1.1.2開發(fā)意義在人們的生活中,大多數(shù)人都已離不開手機(jī),而大多數(shù)手機(jī)用戶選擇智能手機(jī),開發(fā)Android游戲旨在為人們?nèi)粘I钐砑痈嗟膴蕵贩绞剑舜卧O(shè)計出一個能夠在任何環(huán)境任何時間放松心情娛樂心身的單機(jī)游戲,通過簡單易操作的Android游戲幫助手機(jī)用戶打發(fā)閑暇時間、娛樂心身、放松心情。1.2開發(fā)平臺介紹“跳吧”游戲開發(fā)平臺為Eclipse4.3.2+ADT22.6.2+JDK1.7.0_51,模擬測試平臺為AndroidSDK模擬器,真機(jī)測試平臺為ZTEU930HD。1.2.1EclipseEclipse是不僅僅是成為專門開發(fā)JAVA程序的IDE環(huán)境,根據(jù)Eclipse的體系結(jié)構(gòu),通過開發(fā)插件,它能擴(kuò)展到任何語言的開發(fā),甚至能成為圖片繪制的工具。Eclipse是一個開放源代碼的項目,任何人都可以下載Eclipse的源代碼,并且在此基礎(chǔ)上開發(fā)自己的功能插件。也就是說未來只要有人需要,就會有建立在Eclipse之上的C++,JAVA,Python等語言的開發(fā)插件出現(xiàn)。同時可以通過開發(fā)新的插件擴(kuò)展現(xiàn)有插件的功能。可以無限擴(kuò)展,而且有著統(tǒng)一的外觀,操作和系統(tǒng)資源管理,這也正是Eclipse的潛力所在。在本項目中,Eclipse正是通過第三方插件—ADT實(shí)現(xiàn)了開發(fā)Android應(yīng)用。1.2.2ADTADT是英文AndroidDevelopmentTools的簡稱,即Android開發(fā)工具包。ADT是Eclipse中構(gòu)建Android應(yīng)用程序IDE插件,ADT擴(kuò)展了Eclipse的功能,讓開發(fā)人員快速建立新的Android項目、創(chuàng)建應(yīng)用程序的用戶界面。ADT可以幫助Eclipse找到Androidsdk,再加上Android框架的API組件調(diào)試使用AndroidSDK工具,以便APK分發(fā)給應(yīng)用程序。ADT大大減輕Android應(yīng)用程序的開發(fā)工作量,工具集成XML編輯器,將給開發(fā)人員一個令人難以置信的開發(fā)Android應(yīng)用環(huán)境。使用ADT之前,必須確認(rèn)已經(jīng)安裝了Eclipse以及同EclipseIDE兼容版本的AndroidSDK。1.2.3JDKJDK(JavaDevelopmentKit)是Java語言的軟件開發(fā)工具包(SDK)。有SE、EE、ME三個版本。沒有JDK的話,無法編譯Java程序,如果想只運(yùn)行Java程序,要確保已安裝相應(yīng)的JRE。1.3Android操作系統(tǒng)結(jié)構(gòu)1.3.1Android操作系統(tǒng)介紹Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要在移動設(shè)備上工作,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機(jī)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上。1.3.2Android操作系統(tǒng)的優(yōu)點(diǎn)作為一個手機(jī)平臺,Android在技術(shù)上的優(yōu)勢主要有以下幾點(diǎn):(1)全開放智能手機(jī)平臺(2)多硬件平臺的支持(3)使用眾多的標(biāo)準(zhǔn)化技術(shù)(4)核心技術(shù)完整,統(tǒng)一(5)完善的SDK和文檔(6)完善的輔助開發(fā)工具Android的開發(fā)者可以在完備的開發(fā)環(huán)境中進(jìn)行開發(fā),Android的官方網(wǎng)站也提供了豐富的文檔、資料。這樣有利于Android系統(tǒng)的開發(fā)和運(yùn)行在一個良好的生態(tài)環(huán)境中。1.3.3Android系統(tǒng)結(jié)構(gòu)Android的系統(tǒng)結(jié)構(gòu)如下圖1.1所示:圖1.1Android系統(tǒng)結(jié)構(gòu)Android的第1層次由C語言實(shí)現(xiàn),第2層次由C和/C++實(shí)現(xiàn),第3、4層次主要由Java代碼實(shí)現(xiàn)。第1層次和第2層次之間,從Linux操作系統(tǒng)的角度來來看,是內(nèi)核空間與用戶空間的分界線,第1層次運(yùn)行于內(nèi)核空間,第2、3、4層次運(yùn)行于用戶空間。第2層次和第3層次之間,是本地代碼層和Java代碼層的接口。第3層次和第4層次之間,是Android的系統(tǒng)API的接口,對于Android應(yīng)用程序的開發(fā),第3層次以下的內(nèi)容是不可見的,僅考慮系統(tǒng)API即可。由于Android系統(tǒng)需要支持Java代碼的運(yùn)行,這部分內(nèi)容是Android的運(yùn)行環(huán)境(Runtime),由虛擬機(jī)和Java基本類組成。對于Android應(yīng)用程序的開發(fā),主要關(guān)注第3層次和第4層次之間的接口。1.3.4Android應(yīng)用程序組成部分一般情況下,Android應(yīng)用程序由以下4種組件構(gòu)成:?活動(Activity)、廣播接收器(BroadcastReceiver)、服務(wù)(Service)、內(nèi)容提供者(ContentProvider)?;顒邮亲罨镜腁ndroid應(yīng)用程序組件,在應(yīng)用程序中,一個活動通常就是一個單獨(dú)的用戶界面。每一個活動都被實(shí)現(xiàn)為一個獨(dú)立的類,并且從活動(Activity)基類中繼承而來,活動類將會顯示由視圖(View)控件組成的用戶接口,并對事件(Event)做出響應(yīng)。大多數(shù)的應(yīng)用程序都會有多個用戶界面,因此便會有多個相應(yīng)的活動。Android的一個活動一般對應(yīng)界面中的一個屏幕顯示,可以理解成一個界面,每一個活動在界面上可以包含按鈕、文本框等多種可視的UI元素。Android系統(tǒng)中的不同組件具有不同的生命周期。Android根據(jù)每個進(jìn)程中運(yùn)行的組件以及組件的狀態(tài)把進(jìn)程放入一個重要性分級(importancehierarchy)中。Android進(jìn)程的重要性分級,可以理解成執(zhí)行的優(yōu)先級?;顒拥纳芷谌鐖D1.2所示。運(yùn)行活動的情景:當(dāng)一個活動被啟動時,活動中的onCreate()、onStart()和onResume()這3個方法被依次調(diào)用,活動對應(yīng)的界面出現(xiàn)在屏幕上。?活動被“覆蓋”的情景:Android的活動一般都占據(jù)一個完整的屏幕,從當(dāng)前活動啟動另外一個活動時,另一個活動將被啟動到前臺(Foreground),當(dāng)前活動轉(zhuǎn)入后臺(Background),這時活動的onPasuse()方法將被調(diào)用,活動轉(zhuǎn)入后臺運(yùn)行。如果活動變?yōu)椴豢梢?,還將調(diào)用onStop()方法。在轉(zhuǎn)入后臺onStop()是否被調(diào)用取決于活動是否被完全覆蓋,在新的活動有透明部分時,轉(zhuǎn)入后臺的活動依然“可見”,其他情況下(較多數(shù)的情況)活動均進(jìn)入不可見狀態(tài)(被完全覆蓋)。?活動被恢復(fù)的情景:當(dāng)界面上最前面的活動退出后,它所覆蓋的活動將被恢復(fù),這時onResume()方法將被調(diào)用,活動重新轉(zhuǎn)入前臺運(yùn)行。?活動完全退出的情景:當(dāng)使用回退(Back)按鈕退出活動時,onDestroy()方法將被調(diào)用,活動關(guān)閉。如果系統(tǒng)缺少內(nèi)存時,也會殺死(kill)后臺的活動,其中優(yōu)先殺死不可見的活動,可見的活動一般不會被殺死。圖1.2活動的生命周期可行性分析2.1編寫目的可行性研究的目的是目標(biāo)系統(tǒng)是否值得去開發(fā),怎樣才能達(dá)到這個目的。一個項目的開發(fā)需要仔細(xì)分析,看它在目前的情況下是否可行,如果一個項目開發(fā)它具有很好的背景和意義,但是在經(jīng)濟(jì)上或者是技術(shù)上是不可行的,那么它也只能稱之為不能實(shí)現(xiàn)的項目。2.2可行性研究任務(wù)2.2.1技術(shù)可行性確保現(xiàn)有的技術(shù)是否能解決本該開發(fā)項目:系統(tǒng)采用JAVA語言開發(fā),Eclipse作為Android開發(fā)環(huán)境。ADT插件提供了一系列圖形用戶界面組件進(jìn)行界面編程,所以在技術(shù)上可行。Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,是由SunMicrosystems公司推出的Java程序設(shè)計語言和Java平臺的總稱。Java自面世后就非常流行,發(fā)展迅速,對C++語言形成了有力沖擊。Java技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計算機(jī)、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。Java是目前使用最為廣泛的網(wǎng)絡(luò)編程語言之一。它具有簡單,面向?qū)ο?,穩(wěn)定,與平臺無關(guān),解釋型,多線程,動態(tài)等特點(diǎn)。Java語言有以下幾點(diǎn)優(yōu)點(diǎn):面向?qū)ο蟮木幊谈先说乃季S模式,使人們更容易編寫程序。內(nèi)置對多線程的支持。Java程序的安全性。當(dāng)你準(zhǔn)備從網(wǎng)絡(luò)上下載一個程序時,你最大的擔(dān)心是程序中含有惡意的代碼,比如試圖讀取或刪除本地機(jī)上的一些重要文件,甚至該程序是一個病毒程序等。當(dāng)你使用支持Java的瀏覽器時,你可以放心地運(yùn)行Java的小應(yīng)用程序JavaApplet,不必?fù)?dān)心病毒的感染和惡意的企圖,Java小應(yīng)用程序?qū)⑾拗圃贘ava運(yùn)行環(huán)境中,不允許它訪問計算機(jī)的其它部分。Java程序的基本組成單元就是類,有些類是自己編寫的,有一些是從類庫中引入的,而類又是運(yùn)行時動態(tài)裝載的,這就使得Java可以在分布環(huán)境中動態(tài)地維護(hù)程序及類庫,而不像C++那樣,每當(dāng)其類庫升級之后,相應(yīng)的程序都必須重新修改,編譯。因此我覺得Java程序語言該技術(shù)已成熟,采用JAVA編程語言是可行的。2.2.2經(jīng)濟(jì)可行性由于“跳吧”游戲作為畢業(yè)設(shè)計進(jìn)行開發(fā),有本人親自開發(fā),成本不會太高,所以經(jīng)濟(jì)上是可行的。2.2.3操作可行性確定軟件產(chǎn)品是否能夠被最終的用戶所接受,用戶是否能操作最終的產(chǎn)品:該游戲在方便易操作的Android手機(jī)上運(yùn)行,方便于玩家操作。2.3可行性研究結(jié)論根據(jù)以上幾個方面的研究,在技術(shù)上、經(jīng)濟(jì)上和操作上都是可行的,本項目可進(jìn)行開發(fā)。需求分析3.1需求分析的意義為了開發(fā)出真正的滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。為軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提條件,不論人們把設(shè)計和編碼工作做得如何出色,不能真正的滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。需求分析是軟件定義時期的最后一個階段,它的基本任務(wù)是準(zhǔn)確地回答“系統(tǒng)必須做什么”這個問題。3.2游戲功能需求游戲能夠?qū)崿F(xiàn)讓玩家在游戲中放松心神、減輕壓力的作用,同時要求游戲中的精靈不斷變換,鍛煉玩家眼力與手部靈活性的功能。要求“跳吧”游戲能實(shí)現(xiàn)以下功能:主角移動功能。主角移動功能就是玩家利用手機(jī)重力感應(yīng)系統(tǒng)對其進(jìn)行左右移動操作。產(chǎn)生踏板功能。系統(tǒng)可以隨機(jī)產(chǎn)生不同類型的踏板,這些踏板分為:穩(wěn)定踏板、帶刺踏板、左/右移動踏板、彈簧踏板、不穩(wěn)定踏板,并且這些踏板能夠以一定的速度向屏幕頂部移動;同時,帶刺踏板可以對主角造成一定的傷害,左/右移動踏板可以將主角向左/右移動,彈簧踏板會將主角向上彈起,不穩(wěn)定踏板會在主角站在上面時破碎,穩(wěn)定踏板不產(chǎn)生任何效果。產(chǎn)生加分物品。系統(tǒng)會隨機(jī)產(chǎn)生不同類型的加分物品,物品分值隨物品類別不同而不同,且物品要停留一定時間再消失。設(shè)置功能。能夠?qū)τ螒蜻M(jìn)行一些簡單的設(shè)置,這些設(shè)置包括音效設(shè)置、震動設(shè)置、主角移動速度設(shè)置、輸入玩家名稱。血條功能。主角在踩到帶刺踏板時,血條減少一定的值,當(dāng)主角掉到屏幕下方時血條值歸零。排行榜功能。游戲可以跟據(jù)玩家的游戲得分按由高到低順序進(jìn)行排名次。3.3可靠性和可用性需求在游戲開發(fā)階段要求在windows7操作系統(tǒng)、JAVA編程語言、Eclipse平臺下開發(fā),在AndroidSDK虛擬機(jī)和ZTEU930HD真機(jī)下測試運(yùn)行。要求游戲能夠在Android4.0.0及其以上版本、RAM為512MB的安卓手機(jī)上穩(wěn)定流暢運(yùn)行,并要求游戲在運(yùn)行過程中不能影響手機(jī)正常通信功能及用戶手機(jī)上的其他應(yīng)用功能。3.4用例圖在該游戲中玩家可操作游戲的功能有:通過重力感應(yīng)對游戲主角進(jìn)行左右移動、輸入玩家名稱、點(diǎn)擊返回按鈕、點(diǎn)擊重新開始按鈕、點(diǎn)擊退出按鈕、點(diǎn)擊開始按鈕、點(diǎn)擊排行榜按鈕、設(shè)置音效(開/關(guān))、設(shè)置主角移動速度、設(shè)置震動效果。游戲用例圖如圖3.3。圖3.3用例圖總體設(shè)計4.1總體設(shè)計的目標(biāo)和意義經(jīng)過前面的需求分析,已經(jīng)確定了系統(tǒng)要做什么,總體設(shè)計的目的是為了實(shí)現(xiàn)現(xiàn)在怎么做??傮w設(shè)計的意義是為了更好地設(shè)計游戲讓后續(xù)的工作更好地高質(zhì)量工作。4.2功能模塊的劃分該游戲有人物模塊、踏板模塊、設(shè)置模塊、加分物品模塊、血條模塊、排行榜模塊,其中在設(shè)置模塊下包含有音效設(shè)置、震動效果設(shè)置、人物移動速度模塊、輸入玩家名稱模塊,其模塊劃分如下圖4.1。圖4.1功能模塊圖在主角移動模塊中要實(shí)現(xiàn)主角移動動作時顯示連續(xù)的效果;踏板模塊是系統(tǒng)隨機(jī)產(chǎn)生的,含有不同類型的踏板;在設(shè)置模塊當(dāng)中玩家可以根據(jù)自己的喜好進(jìn)行音效設(shè)置(包含音效的開和關(guān))、震動效果設(shè)置、輸入玩家名稱和主角移動速度的設(shè)置;在加分物品模塊當(dāng)中,系統(tǒng)會隨機(jī)產(chǎn)生8中不同類型的加分物品,當(dāng)主角撿到加分物品時游戲成績增加,血條模塊當(dāng)中,每當(dāng)主角受到傷害時血條值將會減少一定的值;排行榜模塊是為了更好地顯示玩家排名。4.3時序圖游戲大概操作流程為玩家點(diǎn)擊游戲圖標(biāo)進(jìn)入游戲主界面,然后點(diǎn)擊開始游戲進(jìn)行操作,等游戲結(jié)束后玩家在彈出的窗口輸入玩家名稱,然后點(diǎn)擊結(jié)束按鈕退出游戲,游戲時序圖如圖4.2。圖4.2時序圖詳細(xì)設(shè)計5.1詳細(xì)設(shè)計的目的和意義詳細(xì)設(shè)計的目的是為了能夠確定具體地實(shí)現(xiàn)所要求的系統(tǒng),經(jīng)過前面的分析和設(shè)計,現(xiàn)應(yīng)該對目標(biāo)系統(tǒng)得出詳細(xì)的描述,并設(shè)計出詳細(xì)的方案,以便讓程序員能夠?qū)懗龈鼮楦哔|(zhì)量的程序代碼。5.2總程序流程圖系統(tǒng)總程序流程圖如圖5.1所示。圖5.1系統(tǒng)總流程圖系統(tǒng)開始時先進(jìn)行判斷是否為開始游戲、是否設(shè)置游戲參數(shù)、是否查看排名、是否退出游戲,然后系統(tǒng)根據(jù)選擇進(jìn)行相應(yīng)的操作,如果選擇是開始游戲則做出開始游戲的動作直到游戲結(jié)束并輸入玩家名稱,點(diǎn)擊返回按鈕;若選擇為設(shè)置游戲則對游戲的各項參數(shù)進(jìn)行設(shè)置,然后點(diǎn)擊返回按鈕;加入選擇排名則系統(tǒng)顯示玩家成績與排名,然后點(diǎn)擊返回按鈕。圖5.2游戲流程圖游戲流程圖如圖5.2所示,當(dāng)點(diǎn)擊開始游戲時,系統(tǒng)判斷玩家接觸到的踏板類型,然后根據(jù)踏板的類型做出不同的效果,當(dāng)玩家左右移動時碰到不穩(wěn)定踏板時,踏板破碎;當(dāng)為彈簧踏板時玩家被彈起;當(dāng)為左右移動踏板時,玩家隨踏板左右移動;當(dāng)為帶刺踏板時,玩家血條將會減少一定的值;當(dāng)玩家血條為零或者玩家直接調(diào)到屏幕下面則游戲結(jié)束。圖5.3游戲設(shè)置流程圖當(dāng)選擇游戲設(shè)置時,玩家可以對游戲參數(shù)進(jìn)行設(shè)置,其設(shè)置流程圖如圖5.3所示。當(dāng)選擇設(shè)置音效時,在游戲設(shè)置界面,設(shè)置音效的開/關(guān)。當(dāng)選擇為設(shè)置人物移動速度時,在游戲設(shè)置界面通過左右滑動調(diào)節(jié)線條來調(diào)節(jié)游戲角色的移動速度,當(dāng)選擇為錄入玩家的名稱時在設(shè)置界面文本框內(nèi)輸入玩家的名稱,然后點(diǎn)擊退出按鈕進(jìn)行保存設(shè)置并退出到游戲主界面,或者當(dāng)點(diǎn)擊設(shè)置界面的返回按鈕時返回游戲主界面。5.3隨機(jī)產(chǎn)生踏板系統(tǒng)隨機(jī)產(chǎn)生0到19數(shù)字,當(dāng)隨機(jī)數(shù)在0-2之間時游戲生成不穩(wěn)定踏板,隨機(jī)數(shù)在3-5之間時游戲生成彈簧踏板,隨機(jī)數(shù)在6-11之間時游戲生成帶刺踏板,當(dāng)隨機(jī)數(shù)在12-13之間時游戲生成左移動踏板,當(dāng)隨機(jī)數(shù)在14-15之間時游戲生成右移動踏板,當(dāng)隨機(jī)數(shù)在16-19之間時游戲生成穩(wěn)定踏板。其踏板產(chǎn)生機(jī)制如圖5.4所示。圖5.4踏板的產(chǎn)生5.4血條參數(shù)的設(shè)置為了游戲更加吸引玩家,同時考慮到游戲的難易程度,玩家在游戲中的心理作用,現(xiàn)將游戲的血條總參數(shù)設(shè)置為18,也就是說游戲主角的總生命值為18,當(dāng)游戲主角每次收到傷害時,血條值減少3,也就是說每當(dāng)玩家受到一次傷害時,游戲主角的生命值減少3,這樣當(dāng)玩家受到傷害6次游戲?qū)⒔Y(jié)束,或者當(dāng)玩家直接掉到屏幕下面時游戲主角的生命值為0,游戲結(jié)束。5.5加分物品的生成為了游戲的有趣性,更好的讓玩家放松,在游戲中得到更大的樂趣,設(shè)置加分機(jī)制,在游戲中將隨機(jī)產(chǎn)生香蕉、蛋糕、西紅柿、桃子、草莓、山果、梨子、面包。每個加分物品的分值如下:面包——1桃子——5山果——4草莓——6西紅柿——10梨——12香蕉——15蛋糕——20加分物品隨機(jī)產(chǎn)生參數(shù)的設(shè)置,系統(tǒng)隨機(jī)產(chǎn)生23個數(shù),當(dāng)隨機(jī)數(shù)為0時游戲生成面包,當(dāng)隨機(jī)數(shù)為1時游戲生成蛋糕,隨機(jī)數(shù)在2-4之間時游戲生成香蕉,隨機(jī)數(shù)在5-7之間時游戲生成梨,當(dāng)隨機(jī)數(shù)在8-10之間時游戲生成西紅柿,當(dāng)隨機(jī)數(shù)在11-13之間時游戲生成桃,當(dāng)隨機(jī)數(shù)在14-17之間時游戲生成草莓,當(dāng)隨機(jī)數(shù)在18-21之間時游戲生成山果。5.6主角連續(xù)動作的生成首先利用if語句判斷主角的狀態(tài)是出于何種狀態(tài),,然后根據(jù)所處的狀態(tài)將首張圖片賦給主角判斷形狀的變量,然后在判斷主角形狀變量與下一張的關(guān)系,然后再將下一張圖片賦給主角形狀變量直到最后一張,最后通過循環(huán)語句和系統(tǒng)定時器來控制動作的發(fā)生和結(jié)束。5.7主角與踏板關(guān)系的判定當(dāng)系統(tǒng)隨機(jī)生成六中不同類型的踏板時,如何判斷主角與踏板發(fā)生碰撞呢?下面是解決主角與踏板關(guān)系的實(shí)現(xiàn)方法。給主角定義一個主角狀態(tài)變量、同時定義踏板類型變量。首先判斷主角與踏板碰撞效果,利用if語句判斷主句坐標(biāo)與踏板坐標(biāo)的關(guān)系,具體如下:當(dāng)主角最大Y軸值大于等于踏板Y軸最小值,同時主角Y軸最大值小于踏板Y軸最大值,同時主角最大X值大于踏板X軸最小值,并且主角X軸最小值小于踏板X軸最大值時為主角和踏板發(fā)生了碰撞。然后再通過主角狀態(tài)變量與踏板類型變量的關(guān)系來判斷主角與何種踏板發(fā)生碰撞并作出相應(yīng)的效果。5.8主角與加分物品關(guān)系的判定判斷主角與加分物品的關(guān)系和判斷主角與踏板關(guān)系的方法基本相似,都是通過坐標(biāo)進(jìn)行判斷,當(dāng)主角最大Y軸值大于等于加分物品Y軸最小值,同時主角Y軸最大值小于加分物品Y軸最大值,同時主角最大X值大于加分物品X軸最小值,并且主角X軸最小值小于加分物品X軸最大值時為主角和加分物品發(fā)生了碰撞。開發(fā)平臺的搭建6.1JAVA虛擬機(jī)的安裝6.1.1JDK的安裝下載jdk1.7.0_51軟件,打開軟件進(jìn)行安裝,如圖6.1、6.2。圖6.1JDK的安裝圖6.2JDK完成安裝6.1.2Java環(huán)境變量配置1.打開我的電腦--屬性--高級--環(huán)境變量,如圖6.3。圖6.3配置Java環(huán)境變量2.新建系統(tǒng)變量JAVA_HOME和CLASSPATH變量名:JAVA_HOME變量值:C:\ProgramFiles\Java\jdk1.7.0變量名:CLASSPATH變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;3.選擇“系統(tǒng)變量”中變量名為“Path”的環(huán)境變量,雙擊該變量,把JDK安裝路徑中bin目錄的絕對路徑,添加到Path變量的值中,并使用半角的分號和已有的路徑進(jìn)行分隔。變量名:Path變量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;6.2Eclipse的安裝下載Eclipse4.3.2、ADT22.6.2、AndroidSDK。6.2.1安裝SDK點(diǎn)擊AndroidSDK進(jìn)行安裝,如圖6.4。圖6.4安裝SDK完成安裝后,打開SDK下載相應(yīng)的Android操作系統(tǒng)版本,如圖6.5。圖6.5安裝Android操作系統(tǒng)6.2.2Eclipse的安裝1、點(diǎn)擊Eclipse安裝軟件,根據(jù)提示進(jìn)行安裝,安裝完成后,點(diǎn)擊help-->installnewsoftware,然后點(diǎn)擊add,在彈出的窗口中點(diǎn)擊archive選擇ADT所在路徑,并在name除填入ADT名稱,然后點(diǎn)擊OK,根據(jù)提示進(jìn)行安裝ADT插件,如圖4.6。圖6.6安裝ADT插件點(diǎn)擊Window->preference,點(diǎn)擊Android選擇Browse選擇sdk所在路徑,點(diǎn)擊apply然后點(diǎn)擊OK,如圖6.7。圖6.7添加SDK路徑編碼實(shí)現(xiàn)7.1編碼的目的通過編碼把軟件設(shè)計結(jié)果翻譯成Java語言的程序,同時也是對設(shè)計的進(jìn)一步具體化,也是對所學(xué)知識的一個具體體現(xiàn)。7.2游戲截圖游戲截圖如下圖7.1,圖7.2,圖7.3,圖7.4。圖7.1游戲主界面圖7.2開始游戲界面圖7.3設(shè)置界面圖7.4游戲結(jié)束界面7.3游戲功能的實(shí)現(xiàn)7.3.1主角動作的實(shí)現(xiàn)主角每完成一個完整的動作是由好多個分解動作組成,比如主角向左移動時,是由好幾個向左走動的單個動作構(gòu)成,那么判斷主角移動狀態(tài)并形成連續(xù)的動作的算法如下:publicintgetRoleSharp(){ if(mRoleStatus==UIModel.ROLE_STATUS_ON_FOOTBOARD){ mRoleSharp=UIModel.ROLE_SHARP_STANDING; returnmRoleSharp; } mFrameCounter++; if(mFrameCounter==mFrameDelay){ mFrameCounter=0; if(mRoleStatus==UIModel.ROLE_STATUS_FREEFALL){ if(mRoleSharp==UIModel.ROLE_SHARP_FREEFALL_NO1){ mRoleSharp=UIModel.ROLE_SHARP_FREEFALL_NO2; }elseif(mRoleSharp==UIModel.ROLE_SHARP_FREEFALL_NO2){ mRoleSharp=UIModel.ROLE_SHARP_FREEFALL_NO3; }elseif(mRoleSharp==UIModel.ROLE_SHARP_FREEFALL_NO3){ mRoleSharp=UIModel.ROLE_SHARP_FREEFALL_NO4; }else{ mRoleSharp=UIModel.ROLE_SHARP_FREEFALL_NO1; } }elseif(mRoleStatus==UIModel.ROLE_STATUS_FREEFALL_RIGHT ||mRoleStatus==UIModel.ROLE_STATUS_ON_FOOTBOARD_RIGHT){ if(mRoleSharp==UIModel.ROLE_SHARP_MOVE_RIGHT_NO1){ mRoleSharp=UIModel.ROLE_SHARP_MOVE_RIGHT_NO2; }elseif(mRoleSharp==UIModel.ROLE_SHARP_MOVE_RIGHT_NO2){ mRoleSharp=UIModel.ROLE_SHARP_MOVE_RIGHT_NO3; }elseif(mRoleSharp==UIModel.ROLE_SHARP_MOVE_RIGHT_NO3){ mRoleSharp=UIModel.ROLE_SHARP_MOVE_RIGHT_NO4; }else{ mRoleSharp=UIModel.ROLE_SHARP_MOVE_RIGHT_NO1; } }else{ if(mRoleSharp==UIModel.ROLE_SHARP_MOVE_LEFT_NO1){ mRoleSharp=UIModel.ROLE_SHARP_MOVE_LEFT_NO2; }elseif(mRoleSharp==UIModel.ROLE_SHARP_MOVE_LEFT_NO2){ mRoleSharp=UIModel.ROLE_SHARP_MOVE_LEFT_NO3; }elseif(mRoleSharp==UIModel.ROLE_SHARP_MOVE_LEFT_NO3){ mRoleSharp=UIModel.ROLE_SHARP_MOVE_LEFT_NO4; }else{ mRoleSharp=UIModel.ROLE_SHARP_MOVE_LEFT_NO1; } } } returnmRoleSharp; }7.3.2隨機(jī)產(chǎn)生踏板在游戲中隨機(jī)生成20個隨機(jī)數(shù),并根據(jù)詳細(xì)設(shè)計里的規(guī)則形成相應(yīng)的踏板,其算法如下:privatevoidgenerateFootboard(){ intframeAmount=1; intframeDelay=1; intframeType=FOOTBOARD_TYPE_NORMAL; switch(mRan.nextInt(20)){ case0: case1: case2: frameType=FOOTBOARD_TYPE_UNSTABLE; break; case3: case4: case5: frameType=FOOTBOARD_TYPE_SPRING; break; case6: case7: case8: case9: case10: case11: frameType=FOOTBOARD_TYPE_SPIKED; break; case12: case13: frameType=FOOTBOARD_TYPE_MOVING_LEFT; frameAmount=2; frameDelay=15; break; case14: case15: frameType=FOOTBOARD_TYPE_MOVING_RIGHT; frameAmount=2; frameDelay=15; break; default: frameType=FOOTBOARD_TYPE_NORMAL;} mFootboardList.add(newFootboard(mRan.nextInt(mScreenAttribute.maxX -BORDER_ATTRIBUTE_IMAGE_WIDTH),mScreenAttribute.maxY +ROLE_ATTRIBUTE_HEITH,BORDER_ATTRIBUTE_IMAGE_WIDTH, BORDER_ATTRIBUTE_IMAGE_HEITH,frameType,frameAmount, frameDelay));}隨機(jī)產(chǎn)生的踏板如圖7.1所示。圖7.1隨機(jī)產(chǎn)生的踏板7.3.3下一個踏板的生成當(dāng)隨機(jī)產(chǎn)生踏板時,在游戲當(dāng)中還要有生成下一個踏板的算法,生成下一個踏板的算法如下所示:publicintnextFrame(){ try{ returnmFrameCounter/mFrameDelay; }finally{ mFrameCounter++; if(mFrameCounter==mFrameAmount*mFrameDelay){ mFrameCounter=0; } }7.3.4隨機(jī)生成加分物品根據(jù)詳細(xì)設(shè)計規(guī)定,隨機(jī)生成25個隨機(jī)數(shù),根據(jù)相關(guān)規(guī)定生成加分物品,實(shí)現(xiàn)算法如下:privatevoidgenerateFood(){ if(mCurFood.mTimeCounter>0){ return; } switch(mRan.nextInt(25)){ case0: mCurFood.mFoodReward=FOOD_1; break; case1: mCurFood.mFoodReward=FOOD_2; break; case2: case3: case4: mCurFood.mFoodReward=FOOD_3; break; case5: case6: case7: mCurFood.mFoodReward=FOOD_4; break; case8: case9: case10: mCurFood.mFoodReward=FOOD_5; break; case11: case12: case13: mCurFood.mFoodReward=FOOD_6; break; case14: case15: case16: case17: mCurFood.mFoodReward=FOOD_7; break; case18: case19: case20: case21: mCurFood.mFoodReward=FOOD_8; break; default: mCurFood.mFoodReward=FOOD_NONE; return; } mCurFood.mMinX=mRan .nextInt((mScreenAttribute.maxX-FOOD_ATTRIBUTE_IMAGE_SIZE)); mCurFood.mMinY=mRan .nextInt((mScreenAttribute.maxY-FOOD_ATTRIBUTE_IMAGE_SIZE)); mCurFood.mMaxX=mCurFood.mMinX+FOOD_ATTRIBUTE_IMAGE_SIZE; mCurFood.mMaxY=mCurFood.mMinY+FOOD_ATTRIBUTE_IMAGE_SIZE; mCurFood.mTimeCounter=FOOD_ATTRIBUTE_DELAY_TIME; }隨機(jī)產(chǎn)生的加分物品如下圖7.2所示。7.2隨機(jī)產(chǎn)生的加分物品7.3.5處理主角和踏板的關(guān)系在游戲當(dāng)中要判斷游戲主角與踏板發(fā)生碰撞,并在發(fā)生碰撞時做出相應(yīng)的動作,若在沒有發(fā)生碰撞時同樣要發(fā)生的動作與效果的實(shí)現(xiàn)算法如下:privatevoidhandleRoleAction(){ Rolerole=mRole; for(Footboardfootboard:mFootboardList){ if((role.getMaxY()>=footboard.getMinY()&&role.getMaxY()<footboard.getMaxY())&&(role.getMaxX()>footboard.getMinX()&&role.getMinX()<footboard.getMaxX())){if(role.getRoleStatus()==ROLE_STATUS_ON_FOOTBOARD||role.getRoleStatus()==ROLE_STATUS_ON_FOOTBOARD_RIGHT||role.getRoleStatus()==ROLE_STATUS_ON_FOOTBOARD_LEFT){ if(footboard.getType()==FOOTBOARD_TYPE_SPRING){ mRoleVelocityY=mFootboartVelocity -GAME_ATTRIBUTE_GRAVITY_VELOCITY; role.addY(-1*GAME_ATTRIBUTE_PIXEL_DENSITY_Y); updateRoleStatus(ROLE_STATUS_FREEFALL); return; } if(footboard.getType()==FOOTBOARD_TYPE_MOVING_LEFT){ role.addX(BOARD_ATTRIBUTE_LEFT_VELOCITY); }elseif(footboard.getType()==FOOTBOARD_TYPE_MOVING_RIGHT){ role.addX(BOARD_ATTRIBUTE_RIGHT_VELOCITY); }elseif(footboard.getType()==FOOTBOARD_TYPE_UNSTABLE &&footboard.isBoardBreak()){ mFootboardList.remove(footboard); } updateRoleStatus(ROLE_STATUS_ON_FOOTBOARD); }else{ //主角第一次觸板 mScore+=mLevel; mRoleVelocityY=mFootboartVelocity; role.setVirtualY(footboard.getVirtualY() -ROLE_ATTRIBUTE_HEITH *GAME_ATTRIBUTE_PIXEL_DENSITY_Y); if(footboard.getType()==FOOTBOARD_TYPE_SPIKED){ mHP-=3; } if(mHP<=0){ mGameStatus=GAME_STATUS_GAMEOVER; } updateRoleStatus(ROLE_STATUS_ON_FOOTBOARD); switch(footboard.getType()){ caseFOOTBOARD_TYPE_UNSTABLE: mEffectFlag=EFFECT_FLAG_UNSTABLE; break; caseFOOTBOARD_TYPE_SPRING: mEffectFlag=EFFECT_FLAG_SPRING; break; caseFOOTBOARD_TYPE_SPIKED: mEffectFlag=EFFECT_FLAG_SPIKED; break; caseFOOTBOARD_TYPE_MOVING_LEFT: caseFOOTBOARD_TYPE_MOVING_RIGHT: mEffectFlag=EFFECT_FLAG_MOVING; break; default: mEffectFlag=EFFECT_FLAG_NORMAL; } } return; } } if(mRoleVelocityY<mFootboartVelocity){ mRoleVelocityY+=3; }else{ mRoleVelocityY=GAME_ATTRIBUTE_GRAVITY_VELOCITY; } updateRoleStatus(ROLE_STATUS_FREEFALL); }7.3.6判斷主角與加分物品的關(guān)系在該游戲中為了提高游戲的可玩性與娛樂性,設(shè)計有主角撿到加分物品可以加分的機(jī)制,當(dāng)然不同的加分物品所加的分值不同,那么如何才能判斷主角撿到加分物品呢?下面就是判斷主角與加分物品關(guān)系的實(shí)現(xiàn)算法。privatevoidhandleFood(){ Foodfood=mCurFood; food.mTimeCounter--; if(food.mFoodReward!=FOOD_NONE&&food.mTimeCounter>0){ if((mRole.getMaxX()>food.mMinX&&mRole.getMinX()<food.mMaxX) &&((mRole.getMaxY()>=food.mMinY&&mRole.getMaxY()<food.mMaxY)||(mRole.getMinY()>food.mMinY&&mRole.getMinY()<=food.mMaxY))){ mEffectFlag=EFFECT_FLAG_TOOLS; mScore+=food.mFoodReward; food.mFoodReward=FOOD_NONE; }}}7.3.7重力感應(yīng)系統(tǒng)注冊重力感應(yīng)監(jiān)聽mSensorManager.registerListener(mSensorEventListener,mSensor, SensorManager.SENSOR_DELAY_GAME); 注銷重力感應(yīng)監(jiān)聽 mSensorManager.unregisterListener(mSensorEventListener,mSensor);7.3.8游戲難度的提升privatevoidincreaseLevel(){ mLevel++; if(mLevel<18||mLevel%20==0){ mFootboartVelocity-=2; introleStatus=mRole.getRoleStatus(); if(roleStatus==ROLE_STATUS_ON_FOOTBOARD ||roleStatus==ROLE_STATUS_ON_FOOTBOARD_RIGHT ||roleStatus==ROLE_STATUS_ON_FOOTBOARD_LEFT){ mRoleVelocityY=mFootboartVelocity; }7.3.9設(shè)置實(shí)現(xiàn)初始化音效:soundPool=newSoundPool(10,AudioManager.STREAM_RING,5); soundPoolMap=newHashMap<Integer,Integer>(); soundPoolMap.put(UIModel.EFFECT_FLAG_NORMAL,soundPool.load( getContext(),R.raw.normal,1)); soundPoolMap.put(UIModel.EFFECT_FLAG_UNSTABLE,soundPool.load( getContext(),R.raw.unstable,1)); soundPoolMap.put(UIModel.EFFECT_FLAG_SPRING,soundPool.load( getContext(),R.raw.spring,1)); soundPoolMap.put(UIModel.EFFECT_FLAG_SPIKED,soundPool.load( getContext(),R.raw.spiked,1)); soundPoolMap.put(UIModel.EFFECT_FLAG_MOVING,soundPool.load( getContext(),R.raw.moving,1)); soundPoolMap.put(UIModel.EFFECT_FLAG_TOOLS,soundPool.load( getContext(),R.raw.tools,1));播放音效:privatevoidplaySoundEffect(intsoundId){ try{ AudioManagermgr=(AudioManager)getContext() .getSystemService(Context.AUDIO_SERVICE); floatstreamVolumeCurrent=mgr .getStreamVolume(AudioManager.STREAM_RING); floatstreamVolumeMax=mgr .getStreamMaxVolume(AudioManager.STREAM_RING); floatvolume=streamVolumeCurrent/streamVolumeMax; soundPool.play(soundPoolMap.get(soundId),volume,volume,1,0, 1f); }catch(Exceptione){ Log.d("PlaySounds",e.toString()); } }音效的設(shè)置如圖7.3。圖7.3音效設(shè)置系統(tǒng)測試8.1測試的目的及意義系統(tǒng)測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。測試的目的就是希望能以最少的人力和時間發(fā)現(xiàn)潛在的各種錯誤和缺陷。應(yīng)根據(jù)開發(fā)各階段的需求、設(shè)計等文檔或程序的內(nèi)部結(jié)構(gòu)精心設(shè)計測試用例,并利用這些實(shí)例來運(yùn)行程序,以便發(fā)現(xiàn)錯誤。信息系統(tǒng)測試應(yīng)包括軟件測試、硬件測試和網(wǎng)絡(luò)測試。硬件測試、網(wǎng)絡(luò)測試可以根據(jù)具體的性能指標(biāo)來進(jìn)行,此處所說的測試更多的是指軟件測試。系統(tǒng)測試是保證系統(tǒng)質(zhì)量和可靠性的關(guān)鍵步驟,是對系統(tǒng)開發(fā)過程中的系統(tǒng)分析系統(tǒng)設(shè)計和實(shí)施的最后復(fù)查。根據(jù)測試的概念和目的,在進(jìn)行信息系統(tǒng)測試時應(yīng)遵循以基本原則。應(yīng)盡早并不斷地進(jìn)行測試。測試不是在應(yīng)用系統(tǒng)開發(fā)完之后才進(jìn)行的。由于原始問題的復(fù)雜性、開發(fā)各階段的多樣性以及參加人員之間的協(xié)調(diào)等因素,使得毛開發(fā)各個階段都有可能出現(xiàn)錯誤。因此,,測試應(yīng)貫穿在開發(fā)的各個階段,盡早糾正錯誤,消除隱患。測試工作應(yīng)該避免由原開發(fā)軟件的人或小組承擔(dān),一方面,開發(fā)人員往往不愿召認(rèn)自己的工作,總認(rèn)為自己開發(fā)的軟件沒有錯誤;另一方面,開發(fā)人員的錯誤很對由本人測試出來,很容易根據(jù)自己編程的思路來制定測試思路,具有局限性。測試工作應(yīng)由專門人員來進(jìn)行,這樣會更客觀,更有效。在測試程序時,不僅要檢驗(yàn)程序是否做了該做的事,還要檢驗(yàn)程序是否做了不該做的事。多余的工作會帶來副作用,影響程序的效率,有時會帶來潛在的危害或錯誤

。嚴(yán)格按照測試計劃來進(jìn)行,避免測試的隨意性。測試計劃應(yīng)包括測試內(nèi)容、進(jìn)度安排、人員安排、測試環(huán)境、測試工具和測試資料等。嚴(yán)格的按照測試計劃可以;認(rèn)證進(jìn)度,使各方面都得以協(xié)調(diào)進(jìn)行。妥善保存測試計劃、測試用例,作為軟件文檔的組成部分,為維護(hù)提供方便。測試是開發(fā)過程中一個獨(dú)立且非常重要的階段,測試過程基本上與開發(fā)過程平行。8.2測試步驟8.2.1模擬器測試為了更好的測試游戲的可用性現(xiàn)用安卓模擬器進(jìn)行測試,首先打開Eclipse軟件,通過import將源代碼導(dǎo)入工作區(qū),然后點(diǎn)擊工具欄的開始按鈕打開模擬器進(jìn)行運(yùn)行,當(dāng)游戲進(jìn)入游戲主界面時按照以下步驟進(jìn)行測試。(1)點(diǎn)擊“選項”à播放背景音樂效果結(jié)果:正常(2)點(diǎn)擊“選項”à播放震動效果結(jié)果:正常(3)點(diǎn)擊“選項”à開始游戲前顯示提示信息結(jié)果:正常(4)點(diǎn)擊“選項”à播放背景音樂效果結(jié)果:正常(5)點(diǎn)擊“選項”à播放背景音樂效果結(jié)果:正常(6)點(diǎn)擊“選項”à輸入玩家名稱結(jié)果:正常游戲結(jié)果如下圖所示。圖8.1游戲主界面圖8.2設(shè)置選項界面圖8.3開始游戲界面圖8.4游戲結(jié)束界面8.2.2真機(jī)測試由于考慮到模擬器的某些bug,所以要求在真機(jī)上進(jìn)行測試,首先將游戲安裝包通過手機(jī)數(shù)據(jù)線傳到手機(jī)內(nèi)存卡里面,然后在手機(jī)文件管理里找到游戲APK安裝包點(diǎn)擊安裝,然后在手機(jī)界面打開游戲進(jìn)行測試,測試結(jié)果截圖如下:8.5真機(jī)游戲主界面8.6真機(jī)設(shè)置選項界面8.7真機(jī)排行榜界面8.8真機(jī)開始游戲界面8.9真機(jī)游戲結(jié)束界面8.3測試結(jié)果分析經(jīng)過模擬器和真機(jī)測試,本游戲?qū)崿F(xiàn)了基本的功能,不過整體功能還不是很強(qiáng)大,游戲在很多方面還需要進(jìn)一步完善與改進(jìn),對于游戲能夠正常運(yùn)行的結(jié)果很滿意。結(jié)束語在我接到“基于Android的游戲開發(fā)”課題時,由于本人以前從來沒有接觸過游戲設(shè)計,所以我就意識到開發(fā)Android游戲任務(wù)的艱巨,剛開始著手開發(fā)游戲時有點(diǎn)迷茫和彷徨,后來通過老師的指導(dǎo)和在網(wǎng)上查找資料,逐漸找到了一些設(shè)計思路。通過本次畢業(yè)設(shè)計讓我了解到了Android游戲所涉及到的相關(guān)技術(shù)、方法,包括Android系統(tǒng)的基本架構(gòu)與工作機(jī)制等。而且能夠在Android開發(fā)平臺上開發(fā)并演示一些基本軟件,通過此次設(shè)計讓我收獲頗多。首先,學(xué)到了很多新知識,并且能夠?qū)⒁郧八鶎W(xué)的知識、學(xué)習(xí)方法及思維方式學(xué)以致用。經(jīng)過長時間的學(xué)習(xí),進(jìn)一步熟悉了Java程序設(shè)計語言。其次,通過本次設(shè)計提高了我的動手能力,能夠主動提出問題,遇到不會的知識點(diǎn)會主動查閱相關(guān)資料,通過實(shí)踐想辦法解決問題,深刻的意識到了“紙上得來終覺淺,絕知此事要躬行”的道理,也明白了實(shí)踐是檢驗(yàn)一切真理的唯一手段。最后,提高了我對檢索相關(guān)資料的能力。這次畢業(yè)設(shè)計過程中我查閱了很多資料,包括網(wǎng)絡(luò)中的電子文檔、電子書籍、網(wǎng)頁及下載的視頻教學(xué)課程;不但有中文資料還有英文資料。這些資料,使我的眼界更開闊,對課題的認(rèn)識更加深刻,編寫程序的時候思路更加清楚,少走了很多彎路?;仡欉@個設(shè)計過程,我不僅學(xué)到了許多書本上以前沒注意到的知識而且學(xué)到了書本外的知識。通過這次設(shè)計,能夠晚上自己親手開發(fā)的游戲,感覺很有成就感,這次設(shè)計不僅豐富了自己的實(shí)踐技能而且擴(kuò)展了本專業(yè)的知識面,使我受益非淺,同時也體驗(yàn)到了搞軟件開發(fā)的困難度。在這次設(shè)計的同時,我又從中學(xué)到了不少珍貴的東西。但由于我對這樣的軟件開發(fā)還只是一個開始,了解的不多,這其中或許還有很多的不足,有些模塊做得不是很好,有些功能還不能夠完全的實(shí)現(xiàn)。因此做得不是很好,界面的設(shè)計及整體的布局還比較簡單,沒有突出特色出來,這是我這個系統(tǒng)的不足之處,也是我以后工作與學(xué)習(xí)中需要提升與完善的地方。致謝在完成該設(shè)計時,我是無比的興奮,因?yàn)槎鄠€月的努力終于有結(jié)果了,當(dāng)然這還得感謝我的指導(dǎo)老師劉愛琴,她在畢業(yè)設(shè)計期間對本人給予了悉心指導(dǎo)和大力幫助。在我課題設(shè)計和論文撰寫的過程中,對我進(jìn)行了嚴(yán)格督促、認(rèn)真檢查和仔細(xì)批閱,而且關(guān)于我的課題也提出了很多富有啟發(fā)性的意見和建議。當(dāng)然這也得感謝我班的同學(xué),在精神上給予了我最大的鼓舞和幫助,我們共同監(jiān)督共同學(xué)習(xí)和進(jìn)步。同時,感謝我身邊的朋友,在本人程序設(shè)計和論文撰寫最艱難時期,他們不斷鼓勵和幫助我。最后,還要向我的家人表示深深的感謝,他們給予了我精神和物質(zhì)上的支持,沒有他們的幫助和關(guān)懷,也許我就無法順利地完成這次畢業(yè)設(shè)計。參考文獻(xiàn)[1]雍俊海.Java程序設(shè)計.北京:清華大學(xué)出版社,2004年[2]Horstmann,C.S.著,葉乃文,杜永萍譯.Java核心技術(shù)卷I:基礎(chǔ)知識.北京:機(jī)械工業(yè)出版社,2008年[3]朱福喜,黃昊.Java項目開發(fā)與畢業(yè)設(shè)計指導(dǎo).北京:清華大學(xué)出版社,2008年[4]楊豐盛.Android應(yīng)用開發(fā)揭秘.機(jī)械工業(yè)出版社,2010年[5]VladimirSilva著,王恒,蘇金國譯.精通Android游戲開發(fā).機(jī)械工業(yè)出版社,2010年[6]張海潘.軟件工程導(dǎo)論(第五版).北京:清華大學(xué)出版社,2008年附錄外文翻譯IntroductiontoJavaJavaisdesignedtomeetthechallengesofapplicationdevelopmentinthecontextofheterogeneous,network-widedistributedenvironments.Paramountamongthesechallengesissecuredeliveryofapplicationsthatconsumetheminimumofsystemresources,canrunonanyhardwareandsoftwareplatform,andcanbeextendeddynamically.Javaoriginatedaspartofaresearchprojecttodevelopadvancedsoftwareforawidevarietyofnetworkdevicesandembeddedsystems.Thegoalwastodevelopasmall,reliable,portable,distributed,real-timeoperatingplatform.Whentheprojectstarted,C++wasthelanguageofchoice.ButovertimethedifficultiesencounteredwithC++grewtothepointwheretheproblemscouldbestbeaddressedbycreatinganentirelynewlanguageplatform.DesignandarchitecturedecisionsdrewfromavarietyoflanguagessuchasEiffel,SmallTalk,ObjectiveC,andCedar/Mesa.Theresultisalanguageplatformthathasprovenidealfordevelopingsecure,distributed,networkbasedend-userapplicationsinenvironmentsrangingfromnetwork-embeddeddevicestotheWorld-WideWebandthedesktop.ThedesignrequirementsofJavaaredrivenbythenatureofthecomputingenvironmentsinwhichsoftwaremustbedeployed.ThemassivegrowthoftheInternetandtheWorld-WideWebleadsustoacompletelynewwayoflookingatdevelopmentanddistributionofsoftware.Toliveintheworldofelectroniccommerceanddistribution,Javamustenablethedevelopmentofsecure,highperformance,andhighlyrobustapplicationsonmultipleplatformsinheterogeneous,distributednetworks.Operatingonmultipleplatformsinheterogeneousnetworksinvalidatesthetraditionalschemesofbinarydistribution,release,upgrade,patch,andsoon.Tosurviveinthisjungle,Javamustbearchitectureneutral,portable,anddynamicallyadaptable.TheJavasystemthatemergedtomeettheseneedsissimple,soitcanbeeasilyprogrammedbymostdevelopers;familiar,sothatcurrentdeveloperscaneasilylearnJava;objectoriented,totakeadvantageofmodernsoftwaredevelopmentmethodologiesandtofitintodistributedclient-serverapplications;multithreaded,forhighperformanceinapplicationsthatneedtoperformmultipleconcurrentactivities,suchasmultimedia;andinterpreted,formaximumportabilityanddynamiccapabilities.Together,theaboverequirementscomprisequiteacollectionofbuzzwords,solet’sexaminesomeofthemandtheirrespectivebenefitsbeforegoingon.What’scompletelynewisthemannerinwhichJavaanditsrun-timesystemhavecombinedthemtoproduceaflexibleandpowerfulprogrammingsystem..DevelopingyourapplicationsusingJavaresultsinsoftwarethatisportableacrossmultiplemachinearchitectures,operatingsystems,andgraphicaluserinterfaces,secure,andhighperformance,WithJava,yourjobasasoftwaredeveloperismucheasier—youfocusyourfullattentionontheendgoalofshippinginnovativeproductsontime,basedonthesolidfoundationofJava.Thebetterwaytodevelopsoftwareishere,now,broughttoyoubytheJavalanguageplatform.VerydynamiclanguageslikeLisp,TCL,andSmallTalkareoftenusedforprototyping.Oneofthereasonsfortheirsuccessatthisisthattheyareveryrobust—youdon’thavetoworryaboutfreeingorcorruptingmemory.Similarly,programmerscanberelativelyfearlessaboutdealingwithmemorywhenprogramminginJava,Thegarbagecollectionsystemmakestheprogrammer’sjobvastlyeasier;withtheburdenofmemorymanagementtakenofftheprogrammer’sshoulders,storageallocationerrorsgoaway.AnotherreasoncommonlygiventhatlanguageslikeLisp,TCL,andSmallTalkaregoodforprototypingisthattheydon’trequireyoutopindowndecisionsearlyon—theselanguagesaresemanticallyrich.Javahasexactlytheoppositeproperty:itforcesyoutomakeexplicitchoices.Alongwiththesechoicescomealotofassistance—youcanwritemethodinvocationsand,ifyougetsomethingwrong,yougettoldaboutitatcompiletime.Youdon’thavetoworryaboutmethodinvocationerror.TheJavabeginnermustgrasp30basicconceptsBasicconcept1.InOOPtheonlyrelationsiswhattheobject’sinterface,suchasthecomputersellerheleavesaloneinternalstructureofelectricalsource,butheisonlyconcernedaboutthatwhetherthepowerwillbesuppliedtoyou,alsosolongasknowcanornotbutisnothowandwhy.Allproceduresaremakeupofcertainattributeandthebehaviorobject,thedifferentobjectvisitinvokesthroughthefunctioninvocation,betweentheobjectallintercommunionareinvokethroughthemethodinvocation,Byobjectdataencapsulation,enhancesreuserateverymuch..2.InOOPthemostimportantthoughtisclass,theclassisthetemplate,isablueprint,constructanobjectfromaclass,namelyconstructaninstanceoftheclass.3.Encapsulation:isthatcombinesthedataandthebehaviorinapackage)andhidesthedatatherealizationprocesstotheobjectuser,inanobjectdataiscalleditsinstancefield.4.Throughexpandsaclasstoobtainanewclassiscalledinheritance,butallclassesareconstructedbytheobjectsuperrootclassofexpansion,superrootclassofasfollowscanmaketheintroduction.5.Object3principalcharacteristicsBehaviorexplainedthisobjectcanmakewhat.Tatewhentheobjectexertsthemethodobjectreflection.Dentityandothersimilarbehaviorobjectsdiscriminationsymbols.Eachobjecthasonlyindentityandamongthreecharacteristicstheyaffectmutually.6.Relationsamongclasses:Use-a:DependentrelationHas-a:PolymerizationrelationIs-a:inheritorrelation--example:AclasshasinheritedBclass,thistimeAclassnotonlyhasBclassofmethod,butalsohasitsownmethod(Individualityexistsingeneralcharacter)7.Structureobjectusestructure:Structureproposing

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論