版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
系統(tǒng)概述1.1游戲開發(fā)背景及意義1.1.1開發(fā)背景手機游戲的出現(xiàn)是為了娛樂心神,并隨著移動終端和移動通信網(wǎng)絡的不斷進步,手機游戲也正在經(jīng)歷由簡單到復雜的進化過程。從全球來看,移動終端的娛樂服務被認為是帶動移動數(shù)據(jù)業(yè)務快速發(fā)展的重要力量。作為手機娛樂服務的重要內(nèi)容之一,近年來,伴隨著移動網(wǎng)絡和移動終端性能的不斷提高與完善,尤其是智能手機的出現(xiàn),手機游戲業(yè)務呈現(xiàn)快速增長趨勢。近幾年來,手機游戲快速發(fā)展的同時按內(nèi)容可分為:角色扮演類、冒險類、格斗類、體育競技類、電影改版類、棋牌類、益智類、模擬類。手機游戲種類已成為人類線上娛樂生活的不可缺少的最主流的載體而存在,各類智能手機伴隨著PC網(wǎng)絡游戲為基礎、3網(wǎng)絡的不斷變化為措施的條件下大力迅猛發(fā)展手機網(wǎng)絡游戲。雖然手機游戲的用戶越來越多,豐富多彩的游戲種類給玩家?guī)砹烁嗟倪x擇,但是我國的手機游戲行業(yè)的發(fā)展現(xiàn)狀并不樂觀,主要因素有:(1)高質(zhì)量游戲軟件開發(fā)公司和人才的貧乏,導致無優(yōu)秀游戲打入市場。(2)游戲創(chuàng)意的匱乏。大多游戲都只是一味的跟風,看到某個游戲成功贏得市場,便改換場景風格,人物造型、故事背景等,其游戲核心一沉不變的思維理念會使得玩家產(chǎn)生審美疲勞。隨著Android游戲的商業(yè)模式越來越凸顯,人們對移動終端的休閑娛樂功能需求越來越大,移動終端上的游戲已成為成為現(xiàn)代人們娛樂生活中不可或缺的。游戲應用服務市場促使手機平臺的不斷提升而日新月異。在未來的游戲產(chǎn)品能否脫穎而出,一切取決于你能玩出什么花樣來,這將激發(fā)更多的開發(fā)商和制作人員攻堅克難創(chuàng)作出高質(zhì)量的作品,而面對手機游戲自身的趣味性、易掌握性、可中斷性、交互性、游戲商家也將面臨亙古未見得激烈競爭。由此可見,手機已是人們?nèi)粘I钪忻懿换蛉钡男蓍e娛樂方式。1.1.2開發(fā)意義在人們的生活中,大多數(shù)人都已離不開手機,而大多數(shù)手機用戶選擇智能手機,開發(fā)Android游戲旨在為人們?nèi)粘I钐砑痈嗟膴蕵贩绞?,此次設計出一個能夠在任何環(huán)境任何時間放松心情娛樂心身的單機游戲,通過簡單易操作的Android游戲幫助手機用戶打發(fā)閑暇時間、娛樂心身、放松心情。1.2開發(fā)平臺介紹“跳吧”游戲開發(fā)平臺為Eclipse4.3.2+ADT22.6.2+JDK1.7.0_51,模擬測試平臺為AndroidSDK模擬器,真機測試平臺為ZTEU930HD。1.2.1EclipseEclipse是不僅僅是成為專門開發(fā)JAVA程序的IDE環(huán)境,根據(jù)Eclipse的體系結(jié)構,通過開發(fā)插件,它能擴展到任何語言的開發(fā),甚至能成為圖片繪制的工具。Eclipse是一個開放源代碼的項目,任何人都可以下載Eclipse的源代碼,并且在此基礎上開發(fā)自己的功能插件。也就是說未來只要有人需要,就會有建立在Eclipse之上的C++,JAVA,Python等語言的開發(fā)插件出現(xiàn)。同時可以通過開發(fā)新的插件擴展現(xiàn)有插件的功能??梢詿o限擴展,而且有著統(tǒng)一的外觀,操作和系統(tǒng)資源管理,這也正是Eclipse的潛力所在。在本項目中,Eclipse正是通過第三方插件—ADT實現(xiàn)了開發(fā)Android應用。1.2.2ADTADT是英文AndroidDevelopmentTools的簡稱,即Android開發(fā)工具包。ADT是Eclipse中構建Android應用程序IDE插件,ADT擴展了Eclipse的功能,讓開發(fā)人員快速建立新的Android項目、創(chuàng)建應用程序的用戶界面。ADT可以幫助Eclipse找到Androidsdk,再加上Android框架的API組件調(diào)試使用AndroidSDK工具,以便APK分發(fā)給應用程序。ADT大大減輕Android應用程序的開發(fā)工作量,工具集成XML編輯器,將給開發(fā)人員一個令人難以置信的開發(fā)Android應用環(huán)境。使用ADT之前,必須確認已經(jīng)安裝了Eclipse以及同EclipseIDE兼容版本的AndroidSDK。1.2.3JDKJDK(JavaDevelopmentKit)是Java語言的軟件開發(fā)工具包(SDK)。有SE、EE、ME三個版本。沒有JDK的話,無法編譯Java程序,如果想只運行Java程序,要確保已安裝相應的JRE。1.3Android操作系統(tǒng)結(jié)構1.3.1Android操作系統(tǒng)介紹Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要在移動設備上工作,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領導及開發(fā)。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機。隨后Google以Apache開源許可證的授權方式,發(fā)布了Android的源代碼。第一部Android智能手機發(fā)布于2008年10月。Android逐漸擴展到平板電腦及其他領域上。1.3.2Android操作系統(tǒng)的優(yōu)點作為一個手機平臺,Android在技術上的優(yōu)勢主要有以下幾點:(1)全開放智能手機平臺(2)多硬件平臺的支持(3)使用眾多的標準化技術(4)核心技術完整,統(tǒng)一(5)完善的SDK和文檔(6)完善的輔助開發(fā)工具Android的開發(fā)者可以在完備的開發(fā)環(huán)境中進行開發(fā),Android的官方網(wǎng)站也提供了豐富的文檔、資料。這樣有利于Android系統(tǒng)的開發(fā)和運行在一個良好的生態(tài)環(huán)境中。1.3.3Android系統(tǒng)結(jié)構Android的系統(tǒng)結(jié)構如下圖1.1所示:圖1.1Android系統(tǒng)結(jié)構Android的第1層次由C語言實現(xiàn),第2層次由C和/C++實現(xiàn),第3、4層次主要由Java代碼實現(xiàn)。第1層次和第2層次之間,從Linux操作系統(tǒng)的角度來來看,是內(nèi)核空間與用戶空間的分界線,第1層次運行于內(nèi)核空間,第2、3、4層次運行于用戶空間。第2層次和第3層次之間,是本地代碼層和Java代碼層的接口。第3層次和第4層次之間,是Android的系統(tǒng)API的接口,對于Android應用程序的開發(fā),第3層次以下的內(nèi)容是不可見的,僅考慮系統(tǒng)API即可。由于Android系統(tǒng)需要支持Java代碼的運行,這部分內(nèi)容是Android的運行環(huán)境(Runtime),由虛擬機和Java基本類組成。對于Android應用程序的開發(fā),主要關注第3層次和第4層次之間的接口。1.3.4Android應用程序組成部分一般情況下,Android應用程序由以下4種組件構成:?活動(Activity)、廣播接收器(BroadcastReceiver)、服務(Service)、內(nèi)容提供者(ContentProvider)。活動是最基本的Android應用程序組件,在應用程序中,一個活動通常就是一個單獨的用戶界面。每一個活動都被實現(xiàn)為一個獨立的類,并且從活動(Activity)基類中繼承而來,活動類將會顯示由視圖(View)控件組成的用戶接口,并對事件(Event)做出響應。大多數(shù)的應用程序都會有多個用戶界面,因此便會有多個相應的活動。Android的一個活動一般對應界面中的一個屏幕顯示,可以理解成一個界面,每一個活動在界面上可以包含按鈕、文本框等多種可視的UI元素。Android系統(tǒng)中的不同組件具有不同的生命周期。Android根據(jù)每個進程中運行的組件以及組件的狀態(tài)把進程放入一個重要性分級(importancehierarchy)中。Android進程的重要性分級,可以理解成執(zhí)行的優(yōu)先級。活動的生命周期如圖1.2所示。運行活動的情景:當一個活動被啟動時,活動中的onCreate()、onStart()和onResume()這3個方法被依次調(diào)用,活動對應的界面出現(xiàn)在屏幕上。?活動被“覆蓋”的情景:Android的活動一般都占據(jù)一個完整的屏幕,從當前活動啟動另外一個活動時,另一個活動將被啟動到前臺(Foreground),當前活動轉(zhuǎn)入后臺(Background),這時活動的onPasuse()方法將被調(diào)用,活動轉(zhuǎn)入后臺運行。如果活動變?yōu)椴豢梢?,還將調(diào)用onStop()方法。在轉(zhuǎn)入后臺onStop()是否被調(diào)用取決于活動是否被完全覆蓋,在新的活動有透明部分時,轉(zhuǎn)入后臺的活動依然“可見”,其他情況下(較多數(shù)的情況)活動均進入不可見狀態(tài)(被完全覆蓋)。?活動被恢復的情景:當界面上最前面的活動退出后,它所覆蓋的活動將被恢復,這時onResume()方法將被調(diào)用,活動重新轉(zhuǎn)入前臺運行。?活動完全退出的情景:當使用回退(Back)按鈕退出活動時,onDestroy()方法將被調(diào)用,活動關閉。如果系統(tǒng)缺少內(nèi)存時,也會殺死(kill)后臺的活動,其中優(yōu)先殺死不可見的活動,可見的活動一般不會被殺死。圖1.2活動的生命周期可行性分析2.1編寫目的可行性研究的目的是目標系統(tǒng)是否值得去開發(fā),怎樣才能達到這個目的。一個項目的開發(fā)需要仔細分析,看它在目前的情況下是否可行,如果一個項目開發(fā)它具有很好的背景和意義,但是在經(jīng)濟上或者是技術上是不可行的,那么它也只能稱之為不能實現(xiàn)的項目。2.2可行性研究任務2.2.1技術可行性確?,F(xiàn)有的技術是否能解決本該開發(fā)項目:系統(tǒng)采用JAVA語言開發(fā),Eclipse作為Android開發(fā)環(huán)境。ADT插件提供了一系列圖形用戶界面組件進行界面編程,所以在技術上可行。Java是一種可以撰寫跨平臺應用軟件的面向?qū)ο蟮某绦蛟O計語言,是由SunMicrosystems公司推出的Java程序設計語言和Java平臺的總稱。Java自面世后就非常流行,發(fā)展迅速,對C++語言形成了有力沖擊。Java技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學超級計算機、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。Java是目前使用最為廣泛的網(wǎng)絡編程語言之一。它具有簡單,面向?qū)ο?,穩(wěn)定,與平臺無關,解釋型,多線程,動態(tài)等特點。Java語言有以下幾點優(yōu)點:面向?qū)ο蟮木幊谈先说乃季S模式,使人們更容易編寫程序。內(nèi)置對多線程的支持。Java程序的安全性。當你準備從網(wǎng)絡上下載一個程序時,你最大的擔心是程序中含有惡意的代碼,比如試圖讀取或刪除本地機上的一些重要文件,甚至該程序是一個病毒程序等。當你使用支持Java的瀏覽器時,你可以放心地運行Java的小應用程序JavaApplet,不必擔心病毒的感染和惡意的企圖,Java小應用程序?qū)⑾拗圃贘ava運行環(huán)境中,不允許它訪問計算機的其它部分。Java程序的基本組成單元就是類,有些類是自己編寫的,有一些是從類庫中引入的,而類又是運行時動態(tài)裝載的,這就使得Java可以在分布環(huán)境中動態(tài)地維護程序及類庫,而不像C++那樣,每當其類庫升級之后,相應的程序都必須重新修改,編譯。因此我覺得Java程序語言該技術已成熟,采用JAVA編程語言是可行的。2.2.2經(jīng)濟可行性由于“跳吧”游戲作為畢業(yè)設計進行開發(fā),有本人親自開發(fā),成本不會太高,所以經(jīng)濟上是可行的。2.2.3操作可行性確定軟件產(chǎn)品是否能夠被最終的用戶所接受,用戶是否能操作最終的產(chǎn)品:該游戲在方便易操作的Android手機上運行,方便于玩家操作。2.3可行性研究結(jié)論根據(jù)以上幾個方面的研究,在技術上、經(jīng)濟上和操作上都是可行的,本項目可進行開發(fā)。需求分析3.1需求分析的意義為了開發(fā)出真正的滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。為軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提條件,不論人們把設計和編碼工作做得如何出色,不能真正的滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。需求分析是軟件定義時期的最后一個階段,它的基本任務是準確地回答“系統(tǒng)必須做什么”這個問題。3.2游戲功能需求游戲能夠?qū)崿F(xiàn)讓玩家在游戲中放松心神、減輕壓力的作用,同時要求游戲中的精靈不斷變換,鍛煉玩家眼力與手部靈活性的功能。要求“跳吧”游戲能實現(xiàn)以下功能:主角移動功能。主角移動功能就是玩家利用手機重力感應系統(tǒng)對其進行左右移動操作。產(chǎn)生踏板功能。系統(tǒng)可以隨機產(chǎn)生不同類型的踏板,這些踏板分為:穩(wěn)定踏板、帶刺踏板、左/右移動踏板、彈簧踏板、不穩(wěn)定踏板,并且這些踏板能夠以一定的速度向屏幕頂部移動;同時,帶刺踏板可以對主角造成一定的傷害,左/右移動踏板可以將主角向左/右移動,彈簧踏板會將主角向上彈起,不穩(wěn)定踏板會在主角站在上面時破碎,穩(wěn)定踏板不產(chǎn)生任何效果。產(chǎn)生加分物品。系統(tǒng)會隨機產(chǎn)生不同類型的加分物品,物品分值隨物品類別不同而不同,且物品要停留一定時間再消失。設置功能。能夠?qū)τ螒蜻M行一些簡單的設置,這些設置包括音效設置、震動設置、主角移動速度設置、輸入玩家名稱。血條功能。主角在踩到帶刺踏板時,血條減少一定的值,當主角掉到屏幕下方時血條值歸零。排行榜功能。游戲可以跟據(jù)玩家的游戲得分按由高到低順序進行排名次。3.3可靠性和可用性需求在游戲開發(fā)階段要求在windows7操作系統(tǒng)、JAVA編程語言、Eclipse平臺下開發(fā),在AndroidSDK虛擬機和ZTEU930HD真機下測試運行。要求游戲能夠在Android4.0.0及其以上版本、RAM為512MB的安卓手機上穩(wěn)定流暢運行,并要求游戲在運行過程中不能影響手機正常通信功能及用戶手機上的其他應用功能。3.4用例圖在該游戲中玩家可操作游戲的功能有:通過重力感應對游戲主角進行左右移動、輸入玩家名稱、點擊返回按鈕、點擊重新開始按鈕、點擊退出按鈕、點擊開始按鈕、點擊排行榜按鈕、設置音效(開/關)、設置主角移動速度、設置震動效果。游戲用例圖如圖3.3。圖3.3用例圖總體設計4.1總體設計的目標和意義經(jīng)過前面的需求分析,已經(jīng)確定了系統(tǒng)要做什么,總體設計的目的是為了實現(xiàn)現(xiàn)在怎么做。總體設計的意義是為了更好地設計游戲讓后續(xù)的工作更好地高質(zhì)量工作。4.2功能模塊的劃分該游戲有人物模塊、踏板模塊、設置模塊、加分物品模塊、血條模塊、排行榜模塊,其中在設置模塊下包含有音效設置、震動效果設置、人物移動速度模塊、輸入玩家名稱模塊,其模塊劃分如下圖4.1。圖4.1功能模塊圖在主角移動模塊中要實現(xiàn)主角移動動作時顯示連續(xù)的效果;踏板模塊是系統(tǒng)隨機產(chǎn)生的,含有不同類型的踏板;在設置模塊當中玩家可以根據(jù)自己的喜好進行音效設置(包含音效的開和關)、震動效果設置、輸入玩家名稱和主角移動速度的設置;在加分物品模塊當中,系統(tǒng)會隨機產(chǎn)生8中不同類型的加分物品,當主角撿到加分物品時游戲成績增加,血條模塊當中,每當主角受到傷害時血條值將會減少一定的值;排行榜模塊是為了更好地顯示玩家排名。4.3時序圖游戲大概操作流程為玩家點擊游戲圖標進入游戲主界面,然后點擊開始游戲進行操作,等游戲結(jié)束后玩家在彈出的窗口輸入玩家名稱,然后點擊結(jié)束按鈕退出游戲,游戲時序圖如圖4.2。圖4.2時序圖詳細設計5.1詳細設計的目的和意義詳細設計的目的是為了能夠確定具體地實現(xiàn)所要求的系統(tǒng),經(jīng)過前面的分析和設計,現(xiàn)應該對目標系統(tǒng)得出詳細的描述,并設計出詳細的方案,以便讓程序員能夠?qū)懗龈鼮楦哔|(zhì)量的程序代碼。5.2總程序流程圖系統(tǒng)總程序流程圖如圖5.1所示。圖5.1系統(tǒng)總流程圖系統(tǒng)開始時先進行判斷是否為開始游戲、是否設置游戲參數(shù)、是否查看排名、是否退出游戲,然后系統(tǒng)根據(jù)選擇進行相應的操作,如果選擇是開始游戲則做出開始游戲的動作直到游戲結(jié)束并輸入玩家名稱,點擊返回按鈕;若選擇為設置游戲則對游戲的各項參數(shù)進行設置,然后點擊返回按鈕;加入選擇排名則系統(tǒng)顯示玩家成績與排名,然后點擊返回按鈕。圖5.2游戲流程圖游戲流程圖如圖5.2所示,當點擊開始游戲時,系統(tǒng)判斷玩家接觸到的踏板類型,然后根據(jù)踏板的類型做出不同的效果,當玩家左右移動時碰到不穩(wěn)定踏板時,踏板破碎;當為彈簧踏板時玩家被彈起;當為左右移動踏板時,玩家隨踏板左右移動;當為帶刺踏板時,玩家血條將會減少一定的值;當玩家血條為零或者玩家直接調(diào)到屏幕下面則游戲結(jié)束。圖5.3游戲設置流程圖當選擇游戲設置時,玩家可以對游戲參數(shù)進行設置,其設置流程圖如圖5.3所示。當選擇設置音效時,在游戲設置界面,設置音效的開/關。當選擇為設置人物移動速度時,在游戲設置界面通過左右滑動調(diào)節(jié)線條來調(diào)節(jié)游戲角色的移動速度,當選擇為錄入玩家的名稱時在設置界面文本框內(nèi)輸入玩家的名稱,然后點擊退出按鈕進行保存設置并退出到游戲主界面,或者當點擊設置界面的返回按鈕時返回游戲主界面。5.3隨機產(chǎn)生踏板系統(tǒng)隨機產(chǎn)生0到19數(shù)字,當隨機數(shù)在0-2之間時游戲生成不穩(wěn)定踏板,隨機數(shù)在3-5之間時游戲生成彈簧踏板,隨機數(shù)在6-11之間時游戲生成帶刺踏板,當隨機數(shù)在12-13之間時游戲生成左移動踏板,當隨機數(shù)在14-15之間時游戲生成右移動踏板,當隨機數(shù)在16-19之間時游戲生成穩(wěn)定踏板。其踏板產(chǎn)生機制如圖5.4所示。圖5.4踏板的產(chǎn)生5.4血條參數(shù)的設置為了游戲更加吸引玩家,同時考慮到游戲的難易程度,玩家在游戲中的心理作用,現(xiàn)將游戲的血條總參數(shù)設置為18,也就是說游戲主角的總生命值為18,當游戲主角每次收到傷害時,血條值減少3,也就是說每當玩家受到一次傷害時,游戲主角的生命值減少3,這樣當玩家受到傷害6次游戲?qū)⒔Y(jié)束,或者當玩家直接掉到屏幕下面時游戲主角的生命值為0,游戲結(jié)束。5.5加分物品的生成為了游戲的有趣性,更好的讓玩家放松,在游戲中得到更大的樂趣,設置加分機制,在游戲中將隨機產(chǎn)生香蕉、蛋糕、西紅柿、桃子、草莓、山果、梨子、面包。每個加分物品的分值如下:面包——1桃子——5山果——4草莓——6西紅柿——10梨——12香蕉——15蛋糕——20加分物品隨機產(chǎn)生參數(shù)的設置,系統(tǒng)隨機產(chǎn)生23個數(shù),當隨機數(shù)為0時游戲生成面包,當隨機數(shù)為1時游戲生成蛋糕,隨機數(shù)在2-4之間時游戲生成香蕉,隨機數(shù)在5-7之間時游戲生成梨,當隨機數(shù)在8-10之間時游戲生成西紅柿,當隨機數(shù)在11-13之間時游戲生成桃,當隨機數(shù)在14-17之間時游戲生成草莓,當隨機數(shù)在18-21之間時游戲生成山果。5.6主角連續(xù)動作的生成首先利用if語句判斷主角的狀態(tài)是出于何種狀態(tài),,然后根據(jù)所處的狀態(tài)將首張圖片賦給主角判斷形狀的變量,然后在判斷主角形狀變量與下一張的關系,然后再將下一張圖片賦給主角形狀變量直到最后一張,最后通過循環(huán)語句和系統(tǒng)定時器來控制動作的發(fā)生和結(jié)束。5.7主角與踏板關系的判定當系統(tǒng)隨機生成六中不同類型的踏板時,如何判斷主角與踏板發(fā)生碰撞呢?下面是解決主角與踏板關系的實現(xiàn)方法。給主角定義一個主角狀態(tài)變量、同時定義踏板類型變量。首先判斷主角與踏板碰撞效果,利用if語句判斷主句坐標與踏板坐標的關系,具體如下:當主角最大Y軸值大于等于踏板Y軸最小值,同時主角Y軸最大值小于踏板Y軸最大值,同時主角最大X值大于踏板X軸最小值,并且主角X軸最小值小于踏板X軸最大值時為主角和踏板發(fā)生了碰撞。然后再通過主角狀態(tài)變量與踏板類型變量的關系來判斷主角與何種踏板發(fā)生碰撞并作出相應的效果。5.8主角與加分物品關系的判定判斷主角與加分物品的關系和判斷主角與踏板關系的方法基本相似,都是通過坐標進行判斷,當主角最大Y軸值大于等于加分物品Y軸最小值,同時主角Y軸最大值小于加分物品Y軸最大值,同時主角最大X值大于加分物品X軸最小值,并且主角X軸最小值小于加分物品X軸最大值時為主角和加分物品發(fā)生了碰撞。開發(fā)平臺的搭建6.1JAVA虛擬機的安裝6.1.1JDK的安裝下載jdk1.7.0_51軟件,打開軟件進行安裝,如圖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變量的值中,并使用半角的分號和已有的路徑進行分隔。變量名:Path變量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;6.2Eclipse的安裝下載Eclipse4.3.2、ADT22.6.2、AndroidSDK。6.2.1安裝SDK點擊AndroidSDK進行安裝,如圖6.4。圖6.4安裝SDK完成安裝后,打開SDK下載相應的Android操作系統(tǒng)版本,如圖6.5。圖6.5安裝Android操作系統(tǒng)6.2.2Eclipse的安裝1、點擊Eclipse安裝軟件,根據(jù)提示進行安裝,安裝完成后,點擊help-->installnewsoftware,然后點擊add,在彈出的窗口中點擊archive選擇ADT所在路徑,并在name除填入ADT名稱,然后點擊OK,根據(jù)提示進行安裝ADT插件,如圖4.6。圖6.6安裝ADT插件點擊Window->preference,點擊Android選擇Browse選擇sdk所在路徑,點擊apply然后點擊OK,如圖6.7。圖6.7添加SDK路徑編碼實現(xiàn)7.1編碼的目的通過編碼把軟件設計結(jié)果翻譯成Java語言的程序,同時也是對設計的進一步具體化,也是對所學知識的一個具體體現(xiàn)。7.2游戲截圖游戲截圖如下圖7.1,圖7.2,圖7.3,圖7.4。圖7.1游戲主界面圖7.2開始游戲界面圖7.3設置界面圖7.4游戲結(jié)束界面7.3游戲功能的實現(xiàn)7.3.1主角動作的實現(xiàn)主角每完成一個完整的動作是由好多個分解動作組成,比如主角向左移動時,是由好幾個向左走動的單個動作構成,那么判斷主角移動狀態(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隨機產(chǎn)生踏板在游戲中隨機生成20個隨機數(shù),并根據(jù)詳細設計里的規(guī)則形成相應的踏板,其算法如下: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));}隨機產(chǎn)生的踏板如圖7.1所示。圖7.1隨機產(chǎn)生的踏板7.3.3下一個踏板的生成當隨機產(chǎn)生踏板時,在游戲當中還要有生成下一個踏板的算法,生成下一個踏板的算法如下所示:publicintnextFrame(){ try{ returnmFrameCounter/mFrameDelay; }finally{ mFrameCounter++; if(mFrameCounter==mFrameAmount*mFrameDelay){ mFrameCounter=0; } }7.3.4隨機生成加分物品根據(jù)詳細設計規(guī)定,隨機生成25個隨機數(shù),根據(jù)相關規(guī)定生成加分物品,實現(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; }隨機產(chǎn)生的加分物品如下圖7.2所示。7.2隨機產(chǎn)生的加分物品7.3.5處理主角和踏板的關系在游戲當中要判斷游戲主角與踏板發(fā)生碰撞,并在發(fā)生碰撞時做出相應的動作,若在沒有發(fā)生碰撞時同樣要發(fā)生的動作與效果的實現(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判斷主角與加分物品的關系在該游戲中為了提高游戲的可玩性與娛樂性,設計有主角撿到加分物品可以加分的機制,當然不同的加分物品所加的分值不同,那么如何才能判斷主角撿到加分物品呢?下面就是判斷主角與加分物品關系的實現(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重力感應系統(tǒng)注冊重力感應監(jiān)聽mSensorManager.registerListener(mSensorEventListener,mSensor, SensorManager.SENSOR_DELAY_GAME); 注銷重力感應監(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設置實現(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()); } }音效的設置如圖7.3。圖7.3音效設置系統(tǒng)測試8.1測試的目的及意義系統(tǒng)測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。測試的目的就是希望能以最少的人力和時間發(fā)現(xiàn)潛在的各種錯誤和缺陷。應根據(jù)開發(fā)各階段的需求、設計等文檔或程序的內(nèi)部結(jié)構精心設計測試用例,并利用這些實例來運行程序,以便發(fā)現(xiàn)錯誤。信息系統(tǒng)測試應包括軟件測試、硬件測試和網(wǎng)絡測試。硬件測試、網(wǎng)絡測試可以根據(jù)具體的性能指標來進行,此處所說的測試更多的是指軟件測試。系統(tǒng)測試是保證系統(tǒng)質(zhì)量和可靠性的關鍵步驟,是對系統(tǒng)開發(fā)過程中的系統(tǒng)分析系統(tǒng)設計和實施的最后復查。根據(jù)測試的概念和目的,在進行信息系統(tǒng)測試時應遵循以基本原則。應盡早并不斷地進行測試。測試不是在應用系統(tǒng)開發(fā)完之后才進行的。由于原始問題的復雜性、開發(fā)各階段的多樣性以及參加人員之間的協(xié)調(diào)等因素,使得毛開發(fā)各個階段都有可能出現(xiàn)錯誤。因此,,測試應貫穿在開發(fā)的各個階段,盡早糾正錯誤,消除隱患。測試工作應該避免由原開發(fā)軟件的人或小組承擔,一方面,開發(fā)人員往往不愿召認自己的工作,總認為自己開發(fā)的軟件沒有錯誤;另一方面,開發(fā)人員的錯誤很對由本人測試出來,很容易根據(jù)自己編程的思路來制定測試思路,具有局限性。測試工作應由專門人員來進行,這樣會更客觀,更有效。在測試程序時,不僅要檢驗程序是否做了該做的事,還要檢驗程序是否做了不該做的事。多余的工作會帶來副作用,影響程序的效率,有時會帶來潛在的危害或錯誤
。嚴格按照測試計劃來進行,避免測試的隨意性。測試計劃應包括測試內(nèi)容、進度安排、人員安排、測試環(huán)境、測試工具和測試資料等。嚴格的按照測試計劃可以;認證進度,使各方面都得以協(xié)調(diào)進行。妥善保存測試計劃、測試用例,作為軟件文檔的組成部分,為維護提供方便。測試是開發(fā)過程中一個獨立且非常重要的階段,測試過程基本上與開發(fā)過程平行。8.2測試步驟8.2.1模擬器測試為了更好的測試游戲的可用性現(xiàn)用安卓模擬器進行測試,首先打開Eclipse軟件,通過import將源代碼導入工作區(qū),然后點擊工具欄的開始按鈕打開模擬器進行運行,當游戲進入游戲主界面時按照以下步驟進行測試。(1)點擊“選項”à播放背景音樂效果結(jié)果:正常(2)點擊“選項”à播放震動效果結(jié)果:正常(3)點擊“選項”à開始游戲前顯示提示信息結(jié)果:正常(4)點擊“選項”à播放背景音樂效果結(jié)果:正常(5)點擊“選項”à播放背景音樂效果結(jié)果:正常(6)點擊“選項”à輸入玩家名稱結(jié)果:正常游戲結(jié)果如下圖所示。圖8.1游戲主界面圖8.2設置選項界面圖8.3開始游戲界面圖8.4游戲結(jié)束界面8.2.2真機測試由于考慮到模擬器的某些bug,所以要求在真機上進行測試,首先將游戲安裝包通過手機數(shù)據(jù)線傳到手機內(nèi)存卡里面,然后在手機文件管理里找到游戲APK安裝包點擊安裝,然后在手機界面打開游戲進行測試,測試結(jié)果截圖如下:8.5真機游戲主界面8.6真機設置選項界面8.7真機排行榜界面8.8真機開始游戲界面8.9真機游戲結(jié)束界面8.3測試結(jié)果分析經(jīng)過模擬器和真機測試,本游戲?qū)崿F(xiàn)了基本的功能,不過整體功能還不是很強大,游戲在很多方面還需要進一步完善與改進,對于游戲能夠正常運行的結(jié)果很滿意。結(jié)束語在我接到“基于Android的游戲開發(fā)”課題時,由于本人以前從來沒有接觸過游戲設計,所以我就意識到開發(fā)Android游戲任務的艱巨,剛開始著手開發(fā)游戲時有點迷茫和彷徨,后來通過老師的指導和在網(wǎng)上查找資料,逐漸找到了一些設計思路。通過本次畢業(yè)設計讓我了解到了Android游戲所涉及到的相關技術、方法,包括Android系統(tǒng)的基本架構與工作機制等。而且能夠在Android開發(fā)平臺上開發(fā)并演示一些基本軟件,通過此次設計讓我收獲頗多。首先,學到了很多新知識,并且能夠?qū)⒁郧八鶎W的知識、學習方法及思維方式學以致用。經(jīng)過長時間的學習,進一步熟悉了Java程序設計語言。其次,通過本次設計提高了我的動手能力,能夠主動提出問題,遇到不會的知識點會主動查閱相關資料,通過實踐想辦法解決問題,深刻的意識到了“紙上得來終覺淺,絕知此事要躬行”的道理,也明白了實踐是檢驗一切真理的唯一手段。最后,提高了我對檢索相關資料的能力。這次畢業(yè)設計過程中我查閱了很多資料,包括網(wǎng)絡中的電子文檔、電子書籍、網(wǎng)頁及下載的視頻教學課程;不但有中文資料還有英文資料。這些資料,使我的眼界更開闊,對課題的認識更加深刻,編寫程序的時候思路更加清楚,少走了很多彎路。回顧這個設計過程,我不僅學到了許多書本上以前沒注意到的知識而且學到了書本外的知識。通過這次設計,能夠晚上自己親手開發(fā)的游戲,感覺很有成就感,這次設計不僅豐富了自己的實踐技能而且擴展了本專業(yè)的知識面,使我受益非淺,同時也體驗到了搞軟件開發(fā)的困難度。在這次設計的同時,我又從中學到了不少珍貴的東西。但由于我對這樣的軟件開發(fā)還只是一個開始,了解的不多,這其中或許還有很多的不足,有些模塊做得不是很好,有些功能還不能夠完全的實現(xiàn)。因此做得不是很好,界面的設計及整體的布局還比較簡單,沒有突出特色出來,這是我這個系統(tǒng)的不足之處,也是我以后工作與學習中需要提升與完善的地方。致謝在完成該設計時,我是無比的興奮,因為多個月的努力終于有結(jié)果了,當然這還得感謝我的指導老師劉愛琴,她在畢業(yè)設計期間對本人給予了悉心指導和大力幫助。在我課題設計和論文撰寫的過程中,對我進行了嚴格督促、認真檢查和仔細批閱,而且關于我的課題也提出了很多富有啟發(fā)性的意見和建議。當然這也得感謝我班的同學,在精神上給予了我最大的鼓舞和幫助,我們共同監(jiān)督共同學習和進步。同時,感謝我身邊的朋友,在本人程序設計和論文撰寫最艱難時期,他們不斷鼓勵和幫助我。最后,還要向我的家人表示深深的感謝,他們給予了我精神和物質(zhì)上的支持,沒有他們的幫助和關懷,也許我就無法順利地完成這次畢業(yè)設計。參考文獻[1]雍俊海.Java程序設計.北京:清華大學出版社,2004年[2]Horstmann,C.S.著,葉乃文,杜永萍譯.Java核心技術卷I:基礎知識.北京:機械工業(yè)出版社,2008年[3]朱福喜,黃昊.Java項目開發(fā)與畢業(yè)設計指導.北京:清華大學出版社,2008年[4]楊豐盛.Android應用開發(fā)揭秘.機械工業(yè)出版社,2010年[5]VladimirSilva著,王恒,蘇金國譯.精通Android游戲開發(fā).機械工業(yè)出版社,2010年[6]張海潘.軟件工程導論(第五版).北京:清華大學出版社,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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 杜絕校園欺凌共建和諧校園演講稿范文(3篇)
- 北京市海淀區(qū)2024-2025學年高二上學期9月月考 數(shù)學試題(含解析)
- DB12-T 1110-2021 企業(yè)開辦登記規(guī)范
- 貢獻社會主題班會教案
- 上海市市轄區(qū)(2024年-2025年小學五年級語文)統(tǒng)編版小升初模擬((上下)學期)試卷及答案
- 上海市縣(2024年-2025年小學五年級語文)統(tǒng)編版專題練習(上學期)試卷及答案
- 浙江省臺州市臺州十校聯(lián)考2024-2025學年高一上學期11月期中日語試題含答案
- 人教版九年級語文上冊教案全集
- 遼寧省沈陽市沈河區(qū)沈陽市第七中學協(xié)作體2024-2025學年八年級上學期期中地理試卷(含答案)
- 廣東省揭陽市2025屆高三上學期第一次月考數(shù)學試題(含答案)
- 2024年廣東省公務員錄用考試《行測》試題及答案解析
- 黑龍江省 哈爾濱市第四十七中學校2024-2025學年七年級上學期期中考試語文試題
- 期中(1-4單元)(試題)-2024-2025學年六年級數(shù)學上冊西師大版
- 河南國有資本運營集團有限公司招聘筆試題庫2024
- 《烏魯木齊市國土空間總體規(guī)劃(2021-2035年)》
- 無人機應用技術專業(yè)申報表
- 2024年巴黎奧運會及奧運會知識宣講課件
- 生涯發(fā)展展示
- 北京電影學院ppt講義.doc
- 亂世巨星諧音歌詞.
- 新精美水墨中國風書香校園讀書活動動態(tài)ppt模板
評論
0/150
提交評論