基于App Inventor彈球游戲開發(fā)和設(shè)計(jì)_第1頁
基于App Inventor彈球游戲開發(fā)和設(shè)計(jì)_第2頁
基于App Inventor彈球游戲開發(fā)和設(shè)計(jì)_第3頁
基于App Inventor彈球游戲開發(fā)和設(shè)計(jì)_第4頁
基于App Inventor彈球游戲開發(fā)和設(shè)計(jì)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于AppInventor彈球游戲開發(fā)和設(shè)計(jì)題目基于AppInventor手機(jī)彈球游戲的開發(fā)和設(shè)計(jì)目錄摘要 緒論1.1彈球游戲項(xiàng)目開發(fā)的背景[1]隨著互聯(lián)網(wǎng)的發(fā)展,智能手機(jī)的迅速普及,手機(jī)的操作系統(tǒng)主要是四種,報(bào)告Apple的ios系統(tǒng),Nokia的塞班系統(tǒng),Microsoft的WindowsMobile,以及Google的Android系統(tǒng),Android系統(tǒng)在全球范圍來看有極大的發(fā)展前景。[1]彈球球游戲是手機(jī)里常見的益智游戲之一,一直被大家喜歡,很多手機(jī)把彈球球游戲作為內(nèi)置游戲。但是目前大多數(shù)游戲使用Java、C、Flash或者AndroidStudio等計(jì)算機(jī)編程語言實(shí)現(xiàn),通常這些軟件需要開發(fā)者有較強(qiáng)的計(jì)算機(jī)編程能力和計(jì)算思維,才能開發(fā)出個(gè)性化的游戲頁面以及玩法。為此,提出使用一款圖片化界面、云積木方式搭建Android程序手機(jī)的編程軟件—APPInventor,不用太多的編程基礎(chǔ),就可以輕松開發(fā)出屬于自己的彈球球游戲。開發(fā)一個(gè)APPInventor程序就從本人的瀏覽器開始,本人首先要設(shè)計(jì)程序的外觀,再設(shè)定程序行為,這過程就像玩樂高積木一樣的簡便,最后再用手機(jī)和電腦相連,程序就會(huì)下載至本人的手機(jī)上。2.游戲相關(guān)技術(shù)和環(huán)境搭建2.1游戲開發(fā)環(huán)境技術(shù)2.1.1AppInventor簡介[1][2][3]AppInventor是一款Google公司開發(fā)的手機(jī)編程工具,于2012年1月交于麻省理工學(xué)院,并被MITAppInventor公布使用,用戶使用該軟件可以快速開發(fā)Android系統(tǒng)的移動(dòng)應(yīng)用。MIT行動(dòng)學(xué)習(xí)中心以及分布了AppInventor2(AI2),原有的AppInventor更名為AppInventorClassic。AI2把BlocksEditor整合至網(wǎng)頁中,而不需要Java另行開啟,AppInventor漢化版本也上線運(yùn)行測(cè)試。目前國內(nèi)教育領(lǐng)域使用的軟件是商業(yè)軟件,特別是基礎(chǔ)軟件很多為封閉軟件,對(duì)于學(xué)生來說很多時(shí)候無法深入了解軟件,對(duì)于培育基礎(chǔ)軟件的開發(fā)人員很不利,而AppInventor是一個(gè)完完全全開源的軟件,此軟件運(yùn)用模塊拼接的方式省略了編碼過程,可以讓學(xué)生更容易理解軟件內(nèi)部結(jié)構(gòu)和培養(yǎng)移動(dòng)計(jì)算邏輯。AppInventor漢化版可以下載一個(gè)安裝包,現(xiàn)在金從軍老師團(tuán)隊(duì)開發(fā)的AppInventor桌面版(圖2-1)和桌面版直連AI伴侶(圖2-2)極大的方便了開發(fā)者,通常幾分鐘就可以構(gòu)思再加測(cè)試了。AppInventor主要界面主要包括界面設(shè)計(jì)頁面(圖2-3)和拼圖設(shè)計(jì)頁面(圖2-4)兩個(gè)工作區(qū)。圖2-1AppInventor桌面版圖圖2-2桌面版直連AI伴侶圖圖2-3界面設(shè)計(jì)頁面圖圖2-4拼圖設(shè)計(jì)頁面圖2.1.2界面設(shè)計(jì)頁面介紹[4][5]首先新建項(xiàng)目命名之后,頁面進(jìn)入界面設(shè)計(jì)頁面(如圖2-2所示)。界面設(shè)計(jì)頁面主要包括七個(gè)小窗口,分別是:網(wǎng)頁導(dǎo)航窗口、工具窗口、調(diào)色板窗口、視圖窗口、列表窗口、多媒體窗口、屬性窗口。進(jìn)行頁面設(shè)計(jì)首先需要?jiǎng)?chuàng)建一個(gè)畫布,讓畫布成為游戲啟動(dòng)之后活動(dòng)的界面,接著拉入需要用到的各種屬性界面,并進(jìn)行設(shè)置活動(dòng)條件。2.1.3拼圖設(shè)計(jì)頁面簡介在頁面的工具窗口上點(diǎn)擊編程模塊,進(jìn)入拼圖設(shè)計(jì)頁面(如圖2-4所示)。拼圖設(shè)計(jì)頁面包括五個(gè)窗口:頁面導(dǎo)航窗口、工具窗口、代碼塊窗口、視圖窗口、列表窗口。進(jìn)行拼圖設(shè)計(jì)需要首先進(jìn)行邏輯運(yùn)算,計(jì)算出每個(gè)角度然后分別控制每一個(gè)精靈球再設(shè)置條件語句,并需要進(jìn)行連接AI伴侶進(jìn)行測(cè)驗(yàn)檢查錯(cuò)誤。2.2項(xiàng)目搭建雙擊打開桌面版AppInventor等待系統(tǒng)連接,連接成功之后進(jìn)入設(shè)計(jì)頁面,點(diǎn)擊項(xiàng)目新建一個(gè)項(xiàng)目,同時(shí)開啟桌面直連版AI伴侶(因?yàn)锳I伴侶的連接需要等待的時(shí)間)。新建項(xiàng)目完成之后,出現(xiàn)手機(jī)式樣的界面,點(diǎn)擊繪圖動(dòng)畫將畫布拖入手機(jī)式樣的界面,此畫布就成為接下來要設(shè)計(jì)的彈球球游戲的活動(dòng)界面,設(shè)置畫布的屬性為高度360像素,寬度為300像素方便后續(xù)操作。畫布組件是一個(gè)具有觸控感應(yīng)的二維版面,在畫布上可以進(jìn)行繪畫,可以移動(dòng)精靈,作為一種容器控件,繪畫和移動(dòng)動(dòng)作只有在此畫布中進(jìn)行。畫布采取經(jīng)典的屏幕坐標(biāo),畫布中的任何一個(gè)點(diǎn)都可以當(dāng)作一對(duì)數(shù)值(X,Y)來定點(diǎn),其中X是距離畫布左邊的距離,Y是距離畫布上端的距離,所有值皆為正數(shù)。通過寬度和高度屬性可以設(shè)置畫布的大小,還支持畫布的顏色改變、背景圖片的更改,以及畫筆顏色和寬度,以及畫布是否可見等屬性。畫布支持的世界有拖拽事件、快劃動(dòng)事件、觸碰按下事件、觸碰抬起事件。再者由于繪圖動(dòng)畫的球組件的屬性并不好控制,本人需要引用精靈,精靈可控程度比球大很多,由于彈球游戲需要有碰撞環(huán)節(jié),本人再引用四個(gè)精靈,此時(shí)畫布上就有五個(gè)精靈,分別對(duì)五個(gè)精靈進(jìn)行屬性設(shè)置,再點(diǎn)擊素材上傳,上傳實(shí)現(xiàn)準(zhǔn)備好的三張PNG格式的圖片,剪裁至合適的大小,分別是一張球的圖片,兩張小汽車的圖片。球形精靈組件是一種可以在畫布中自由活動(dòng)的圖像,并且可以和球體以及其他圖像精靈和畫布邊界產(chǎn)生碰撞事件,因此常用來作為游戲開發(fā)組件。除了可以運(yùn)用圖像屬性設(shè)置其他圖像之外,其他分屬性、事件和方法都和球體控制一致。將第一個(gè)精靈改名為球球,并在上傳素材里選擇球的圖片,接著設(shè)置球的屬性。然后為接下來的四個(gè)精靈改名,分別改為上車、下車、左車、右車,按照上下左右的方向安置到畫布的四條邊上,然后設(shè)置上車和右車的方向?yàn)?80度。本文的彈球項(xiàng)目搭建完畢(圖2-5),接下來就需要進(jìn)入編程界面進(jìn)行模塊搭建。圖2-5界面設(shè)計(jì)完畢圖3.游戲總體設(shè)計(jì)3.1游戲功能設(shè)計(jì)[5][6]首先是角色控制,要防止球形精靈碰撞到邊界,進(jìn)行統(tǒng)計(jì)計(jì)分,每次成功反彈走小球就得一次分,設(shè)計(jì)游戲時(shí)間限制為60秒,當(dāng)游戲結(jié)束有兩種可能,一種是60秒的時(shí)間結(jié)束,另外一種是小球碰撞到邊界。本游戲還有保存歷史記錄的功能,游戲結(jié)束時(shí)會(huì)保存游戲的最高記錄到手機(jī)的數(shù)據(jù)庫中,在游戲結(jié)束之后的對(duì)話框中顯示本次游戲得分以及歷史最高的游戲得分記錄,并且允許玩家可以清除已經(jīng)保存過的最高記錄,還有可以選擇重新返回游戲的選項(xiàng),即重新開始新的一輪游戲。設(shè)計(jì)思路為:設(shè)置球球精靈在與小車發(fā)生碰撞之后的行為計(jì)分。具體結(jié)構(gòu)框架圖如圖3-1所示:圖3-1彈球球游戲流程圖3.2游戲模塊設(shè)計(jì)3.2.1游戲運(yùn)算邏輯關(guān)系[7]小球要在畫布里同邊界發(fā)生碰撞然后反彈,本人假設(shè)反彈前后小球速度不發(fā)生改變,方向理應(yīng)遵循反射角等于入射角的規(guī)律。通過計(jì)算可得:(假設(shè)入射角為α,反射角為β)①小球同畫布的底部和頂部發(fā)生碰撞時(shí):β=360-α②小球同畫布的左邊和右邊發(fā)生碰撞時(shí):β=180-α小車要在畫布上運(yùn)動(dòng)時(shí)要計(jì)算清楚小車的位置和速度的關(guān)系,分別有x和y坐標(biāo)軸,可以實(shí)現(xiàn)小車在畫布上滑動(dòng)。當(dāng)拖動(dòng)小車時(shí),小車精靈開始工作,小球碰撞到小車時(shí)開始計(jì)分。小車滑動(dòng)流程圖如3-2圖示:圖3-2小車滑動(dòng)流程圖3.2.2游戲得分模塊設(shè)計(jì)球精靈是隨機(jī)運(yùn)動(dòng),計(jì)分規(guī)則是通過操縱小車模塊去撞擊運(yùn)動(dòng)快要到邊界的球形精靈,撞擊到并反彈得以計(jì)一分,一直累計(jì)至當(dāng)小車沒有撞擊到小球時(shí),游戲結(jié)束。此時(shí)記錄下來的成績得以保存,點(diǎn)擊重新開始時(shí)歷史最高記錄會(huì)存在,點(diǎn)擊清除最高記錄時(shí)歷史最高記錄分?jǐn)?shù)清零。如圖3-3所示:否不加分否不加分3-3游戲得分流程圖3.3游戲編程設(shè)計(jì)3.3.1游戲初始化模塊設(shè)計(jì)[8]在完成游戲畫布五個(gè)精靈球的設(shè)計(jì)之后,點(diǎn)擊右上角的編程按鈕進(jìn)入編程界面,在編程界面中有兩個(gè)工具,一個(gè)是背包用來存放可以多次使用的代碼,一個(gè)是垃圾桶工具可以用來刪除不需要的代碼。通過畫布的滑屏運(yùn)動(dòng)來實(shí)現(xiàn)小車精靈的滑動(dòng)運(yùn)動(dòng),球形精靈在畫布隨機(jī)運(yùn)動(dòng)。設(shè)置畫布的初始化程序,接著設(shè)置球的方向,因?yàn)樾枰蚴请S機(jī)運(yùn)動(dòng)的所以運(yùn)用到代碼塊數(shù)字里的隨機(jī)數(shù),并把隨機(jī)數(shù)設(shè)置為0-360之間的隨機(jī)數(shù),設(shè)置球的速度為10。如圖3-4所示:圖3-4畫布初始化程序圖接著設(shè)置小車的初始位置,定義過程為小車初始化可以讓游戲開始或者游戲重新開始時(shí)小車可以回到原點(diǎn)。①設(shè)上車的X坐標(biāo)為畫布的寬度減去上車的寬度再除以2,上車的Y坐標(biāo)為0;②設(shè)下車的X坐標(biāo)為畫布的寬度減去上車的寬度再除以2,下車的Y坐標(biāo)為畫布的高度減去下車的高度;③設(shè)左車的X坐標(biāo)為0,左車的Y坐標(biāo)畫布的高度減去左車的高度再除以2;④設(shè)右車的X坐標(biāo)為畫布的寬度減去右車的寬度,右車的Y坐標(biāo)畫布的高度減去右車的高度再除以2;定義完成之后在初始化中調(diào)用這個(gè)小車初始化的過程。如圖3-5所示:圖3-5小車初始化定義圖3.3.2游戲運(yùn)動(dòng)模塊設(shè)計(jì)當(dāng)畫布被滑動(dòng)時(shí),設(shè)定一個(gè)全局變量為放大倍數(shù),①設(shè)定上車的X坐標(biāo)為上車的X坐標(biāo)加上速度的X分量乘以放大倍數(shù);②設(shè)定下車的X坐標(biāo)為下車的X坐標(biāo)加上速度的X分量乘以放大倍數(shù);③設(shè)定左車的Y坐標(biāo)為左車的Y坐標(biāo)加上速度Y分量乘以放大倍數(shù);④設(shè)定左車的Y坐標(biāo)為左車的Y坐標(biāo)加上速度Y分量乘以放大倍數(shù);如圖3-6所示:圖3-6畫布滑動(dòng)定義圖由于滑動(dòng)很不靈活,需要在設(shè)計(jì)視圖里添加一個(gè)方向傳感器。當(dāng)方向傳感器方向改變時(shí),聲明一個(gè)全局變量放大倍數(shù)。如圖3-8所示①設(shè)上車的X坐標(biāo)為上車的X坐標(biāo)加上余弦方向傳感器角度乘放大倍數(shù);②設(shè)下車的X坐標(biāo)為下車的X坐標(biāo)加上余弦方向傳感器角度乘放大倍數(shù);③設(shè)左車的Y坐標(biāo)為左車的Y坐標(biāo)減去正弦方向傳感器角度乘放大倍數(shù);④設(shè)右車的Y坐標(biāo)為右車的Y坐標(biāo)減去正弦方向傳感器角度乘放大倍數(shù);如圖3-7所示:圖3-7傳感器定義圖當(dāng)球形精靈和其他精靈發(fā)生碰撞時(shí),如果其他精靈等于上車或者下車時(shí),此時(shí)球形精靈的方向?yàn)?60減去原來球形精靈的方向,如果其他精靈等于左車或者右車時(shí),此時(shí)球形精靈的方向?yàn)?80減去原來球形精靈的方向。如圖3-8所示:圖3-8小球與其他精靈碰撞時(shí)定義圖當(dāng)小球碰到邊界時(shí),小球?yàn)樗狼?。設(shè)定小球碰到邊界時(shí)啟用為假,此時(shí)小球觸碰到邊界游戲就結(jié)束了。如圖3-9所示:圖3-9小球碰到邊界定義圖3.3.3游戲計(jì)分模塊設(shè)計(jì)在設(shè)計(jì)界面添加一個(gè)按鈕為重啟按鈕,把按鈕的顯示文本改為重新開始。然后在編程界面定義重啟按鈕,定義為當(dāng)重啟按鈕被點(diǎn)擊時(shí),按鈕啟用為真。設(shè)球形精靈的X坐標(biāo)為畫布的寬度除以2,球形精靈的Y坐標(biāo)為畫布的高度除以2。如圖3-10所示:圖3-10重啟按鈕被點(diǎn)擊定義圖為了計(jì)分需要定義一個(gè)全局變量為0,當(dāng)球形精靈每碰撞成功其他精靈一次時(shí)就加分為1,當(dāng)游戲結(jié)束時(shí)就會(huì)顯示這局游戲的得分。設(shè)定全局變量為得分,加分在小球的碰撞檢測(cè)事件里面,當(dāng)碰到一次時(shí)就被成功彈回,此時(shí)分?jǐn)?shù)加1,另需要在屏幕上顯示一個(gè)得分分?jǐn)?shù),所以需要在設(shè)計(jì)界面屏幕上方添加一個(gè)水平布局組件和兩個(gè)標(biāo)簽,第一個(gè)標(biāo)簽顯示文本為“得分:”,第二個(gè)標(biāo)簽顯示文本為“0”。在球形精靈與其他精靈碰撞時(shí)設(shè)定全局得分為全局得分加1。如圖3-11所示:圖3-11小球計(jì)分定義圖3.3.4游戲結(jié)束模塊設(shè)計(jì)在設(shè)計(jì)界面屏幕上添加一個(gè)計(jì)時(shí)器,當(dāng)在設(shè)定的時(shí)間內(nèi)計(jì)時(shí)器計(jì)時(shí)完時(shí)間要在屏幕上顯示一個(gè)“GAMEOVER!”的對(duì)話框。需要添加3個(gè)組件,第一個(gè)是用來顯示剩余時(shí)間的數(shù)字滑動(dòng)條,將數(shù)字滑動(dòng)條的寬度設(shè)定為屏幕同寬,最大值設(shè)定為60,最小值設(shè)定為0,滑塊位置設(shè)定為0。添加第二個(gè)組件為計(jì)時(shí)器組件,計(jì)時(shí)間隔為1秒,并讓計(jì)時(shí)器從游戲開始時(shí)就開始倒計(jì)時(shí)。添加第三個(gè)組件為對(duì)話框,對(duì)話框的用途在于可以使游戲結(jié)束時(shí)彈出一個(gè)消息,提示玩家現(xiàn)在游戲的狀態(tài)。計(jì)時(shí)事件需要聲明一個(gè)全局變量,叫做剩余事件的全局變量,默認(rèn)為60秒,在計(jì)時(shí)器的計(jì)時(shí)事件里,每計(jì)時(shí)一次就讓時(shí)間為原來的剩余時(shí)間減去1。還需聲明數(shù)字滑動(dòng)條的位置,設(shè)數(shù)字滑動(dòng)條的位置為剩余時(shí)間。如果剩余時(shí)間等于0,設(shè)計(jì)時(shí)器的啟用計(jì)時(shí)屬性為假,然后彈出對(duì)話框:消息為“得分”(暫時(shí)),標(biāo)題為“GAMEOVER!”,按鈕1為“退出游戲”,按鈕2為“清除記錄”。當(dāng)小球碰到邊界時(shí)也要調(diào)用游戲結(jié)束的過程。如圖3-12所示:圖3-12游戲結(jié)束設(shè)計(jì)圖3.3.5游戲歷史記錄分?jǐn)?shù)模塊設(shè)計(jì)要把最高的游戲記錄得分保存到數(shù)據(jù)庫中,需要在設(shè)計(jì)界面加入一個(gè)數(shù)據(jù)庫組件,數(shù)據(jù)庫通過標(biāo)記的方式來存取或讀取數(shù)據(jù),在游戲結(jié)束時(shí)保存數(shù)據(jù)。設(shè)定一個(gè)局部變量為歷史記錄,讓此局部變量等于從本地?cái)?shù)據(jù)庫里讀取出來的得分,如果無標(biāo)記返回(第一次玩此游戲)設(shè)定值為0,如果當(dāng)前得分大于歷史記錄,這是再保存得分。再修改之前對(duì)話框1的參數(shù)消息為“歷史記錄:”“本次得分”。如圖3-13所示:圖3-13歷史記錄定義圖當(dāng)對(duì)話框事件完成選擇時(shí),如果選擇結(jié)果等于返回,那么就重新開始游戲。重新開始游戲全局得分為0,并且讓滑塊的位置重新回到60。要重新設(shè)置計(jì)時(shí)器啟用計(jì)時(shí)為真。如圖3-14所示:圖3-14重新開始定義圖在對(duì)話框完成選擇事件里完成退出程序,如果選擇結(jié)果等于退出游戲,那么就退出程序。如圖3-15所示:圖3-15退出游戲和清除歷史記錄定義圖清除歷史記錄之后并不會(huì)退出游戲,還可以繼續(xù)返回游戲,在對(duì)話框完成選擇事件里繼續(xù)調(diào)用一次重新開始,以實(shí)現(xiàn)清除歷史記錄之后重新開始游戲。如圖所示3-16所示:圖3-16重新開始圖4.游戲功能測(cè)試4.1測(cè)試方法以及工具[9][10]App編寫完畢之后,打開本地磁盤里的AI伴侶雙擊啟動(dòng),會(huì)彈出一個(gè)DOS窗口,不能關(guān)閉最小化放在工具欄就可以,啟動(dòng)AI伴侶需要等待一段時(shí)間,當(dāng)跳出安卓手機(jī)界面時(shí),打開APPInventor設(shè)計(jì)界面,在工具欄點(diǎn)擊連接里的USB連接,APPInventor連接到AI伴侶需要等待10秒左右的程序加載時(shí)間,連接成功即可順利進(jìn)入測(cè)試界面。測(cè)試過程中所用到的AI伴侶是金從軍老師工作室開發(fā)的桌面直連版AI伴侶,相比于之前版本的更容易上手操作。AI伴侶連接過程中出現(xiàn)了錯(cuò)誤的解決方法。①首先是版本的問題,使用的AI伴侶要同Appinventor的版本一致,版本不一致會(huì)導(dǎo)致AI伴侶一致處于連接不上的狀態(tài),AppInventor也會(huì)一直提示AI伴侶不在啟動(dòng)范圍。②桌面直連版AI伴侶在win1064位的電腦上無法使用模擬器連接,只能通過USB端口連接。③電腦的360軟件會(huì)在后臺(tái)攔截AI伴侶啟動(dòng),要將360軟件關(guān)閉或者是允許360通過AI伴侶。4.2小球碰撞檢測(cè)用手指劃動(dòng)屏幕,檢測(cè)小車移動(dòng)的流暢性,小球是隨機(jī)運(yùn)動(dòng)。滑動(dòng)小車使小球可以碰撞到小車,然后按照之前設(shè)定好的碰撞反彈角度進(jìn)行反彈,檢測(cè)是否反彈方向和速度符合設(shè)定原來。當(dāng)小球碰到畫布邊界時(shí)游戲結(jié)束。4.3游戲功能檢測(cè)本游戲設(shè)定的時(shí)間為60秒,點(diǎn)擊開始游戲時(shí)進(jìn)入新游戲界面,滑動(dòng)小車去碰撞移動(dòng)的小球?qū)崿F(xiàn)反彈小球,此時(shí)計(jì)時(shí)器的滑動(dòng)條進(jìn)行倒計(jì)時(shí)滑動(dòng),則計(jì)時(shí)器功能正常,當(dāng)小球碰到畫布邊界時(shí)游戲結(jié)束,滑動(dòng)條停止,點(diǎn)擊重新開始游戲時(shí)滑動(dòng)條回到原位,小球也回到原位。小球的移動(dòng)順暢,小車滑動(dòng)順暢無阻礙。游戲記錄得以保存,并且當(dāng)游戲記錄打破前次最高記錄時(shí),歷史記錄會(huì)由本次記錄更替,歷史記錄功能正常,點(diǎn)擊清除歷史記錄時(shí),進(jìn)行下次游戲歷史記錄顯示為0,清除記錄功能正常,點(diǎn)擊退出游戲是,游戲退出,退出游戲正常。在手機(jī)上運(yùn)行時(shí),有傳感器,當(dāng)把手機(jī)向上時(shí)小車隨之下,向左時(shí)小車隨之向右,傳感器功能正常。點(diǎn)擊重啟按鈕,游戲重啟成功,重啟按鈕定義正常。游戲結(jié)束時(shí)彈出文本框顯示之前相應(yīng)設(shè)定的文字:“返回”“退出游戲”“重新開始”,文本框顯示正常。如圖4-1所示:圖4-1游戲成果部分示意圖4.4游戲步驟和測(cè)試結(jié)果以及分析項(xiàng)目完成之后保存項(xiàng)目,關(guān)閉AI伴侶和AppInventor桌面版,等待一分鐘AppInventor釋放緩存之后,重新開啟AI伴侶和AppInventor桌面版,雙擊進(jìn)入彈球游戲項(xiàng)目點(diǎn)擊連接USB連接,AI伴侶開始模擬安卓手機(jī)環(huán)境進(jìn)行游戲,點(diǎn)擊開始游戲測(cè)試按鈕運(yùn)行正常,滑動(dòng)鼠標(biāo)模擬安卓手機(jī)觸摸屏運(yùn)行正常,小球碰撞到畫布界面游戲結(jié)束,游戲結(jié)束的定義正常,點(diǎn)擊清除歷史記錄,歷史記錄清零,歷史記錄定義正常。彈球游戲可以由Java語言、C語言、Python語言開發(fā),但是本項(xiàng)目使用AppInventor開發(fā)更為簡易上手,并且檢查bug時(shí)也容易找到錯(cuò)誤。在本項(xiàng)目運(yùn)行和調(diào)試過程中一共出現(xiàn)了幾處bug,均在測(cè)試時(shí)都改正,具體如下:首先是AI伴侶顯示不在連接范圍之內(nèi),經(jīng)常多次排除之后的解決方案是只能使用USB端口直接連接才能使AI伴侶正常連接到APPInventor,并進(jìn)行正常項(xiàng)目操作。一次出現(xiàn)在重新開始之后,由于之前小球碰壁,小球一直處在邊界,游戲變成死局,經(jīng)過查找發(fā)現(xiàn)需要在重啟按鈕程序定義小球的X坐標(biāo)為畫布的寬度除以2,小球的Y坐標(biāo)為畫布的高度除以2。一次出現(xiàn)在數(shù)字滑動(dòng)條上,本人對(duì)游戲的設(shè)定是游戲開始時(shí),計(jì)時(shí)開始數(shù)字滑動(dòng)條,游戲結(jié)束時(shí)數(shù)字滑動(dòng)條停止滑動(dòng),游戲重新開始時(shí)數(shù)字滑動(dòng)條回到原點(diǎn)重新開始滑動(dòng)。本人一開始只定義了數(shù)字滑動(dòng)條在游戲過程中滑動(dòng),經(jīng)測(cè)試之后發(fā)現(xiàn)計(jì)時(shí)器并不會(huì)隨著時(shí)間變化,多番檢查之后才發(fā)現(xiàn),在調(diào)用游戲重新開始時(shí)沒有設(shè)置計(jì)時(shí)器啟動(dòng)為真,導(dǎo)致計(jì)時(shí)器沒有發(fā)揮正常的作用,重新定義之后數(shù)字滑動(dòng)條就是正常運(yùn)行。一次出現(xiàn)在游戲歷史記錄保存的程序中,本人設(shè)定的游戲是游戲得分每一局都從0開始累計(jì),小車碰撞小球并使小球反彈,計(jì)分一分,但是在檢測(cè)過程中發(fā)現(xiàn),游戲得分新開局時(shí)并沒有進(jìn)行清零,而是在前一局得分的基礎(chǔ)上繼續(xù)累計(jì)得分,經(jīng)查找發(fā)現(xiàn)在程序重新開始的過程中應(yīng)該定義全局得分為0,全局剩余時(shí)間設(shè)為60秒,數(shù)字滑動(dòng)條的滑塊位置等于剩余時(shí)間,這樣設(shè)定之后,游戲得分記錄運(yùn)行正常。得分設(shè)定正常之后發(fā)現(xiàn)得分和顯示分?jǐn)?shù)的兩個(gè)標(biāo)簽方向位置發(fā)生顛倒,需要把位置重新顛倒過來。一次出現(xiàn)保存歷史記錄程序的定義過程中,本人設(shè)定的游戲保存歷史記錄過程為,當(dāng)玩家完成游戲并取得的記錄比之前最高分高時(shí),就保存記錄。但是當(dāng)在檢測(cè)過程中出現(xiàn)了歷史記錄一直處于前一次游戲的分值,所以保存歷史記錄這個(gè)程序設(shè)定有問題。經(jīng)查找發(fā)現(xiàn)在游戲結(jié)束的定義過程中,保存歷史記錄的定義有誤,后修改為如果當(dāng)前得分大于歷史記錄,這時(shí)再保存新的得分記錄??偨Y(jié)本項(xiàng)目以AppInventor基礎(chǔ)進(jìn)行開發(fā)設(shè)計(jì),盡管Appinventor號(hào)稱是面向所有人的開發(fā)環(huán)境,但是本人認(rèn)為依然需要花費(fèi)很多時(shí)間去學(xué)習(xí),才會(huì)順暢使用。本項(xiàng)目實(shí)現(xiàn)的是安卓系統(tǒng)的彈球游戲,通過AppInventor的開源開發(fā)環(huán)境,使用這種“積木式編程”進(jìn)行程序搭建,彈球游戲設(shè)計(jì)的三大板塊是碰撞檢測(cè)板塊,計(jì)分板塊和游戲結(jié)束板塊,需要定義小車初始化、游戲結(jié)束、重新三個(gè)模塊,聲明全局變量得分、剩余時(shí)間兩個(gè)變量,設(shè)定Screen1回退時(shí)、方向傳感器方向改變時(shí)、畫布1劃動(dòng)時(shí)、計(jì)時(shí)器1到達(dá)計(jì)時(shí)點(diǎn)時(shí)、球球與其他精靈碰撞時(shí)、球球碰到邊界時(shí)、對(duì)話框完成選擇時(shí)、重啟按鈕被點(diǎn)擊時(shí)八個(gè)程序才能組裝完成程序代碼,使得彈球游戲創(chuàng)建完畢。在本游戲設(shè)計(jì)實(shí)現(xiàn)過程中,考慮到游戲穩(wěn)定性,也考慮到游戲數(shù)據(jù)存儲(chǔ)等因數(shù),采用了本地?cái)?shù)據(jù)庫的組件以及手機(jī)自帶的數(shù)據(jù)庫進(jìn)行游戲得分記錄存儲(chǔ)。本游戲設(shè)計(jì)的最大難點(diǎn)就是,小球在畫布上碰撞并反彈的角度計(jì)算以及小車隨觸摸功能滑動(dòng)的范圍計(jì)算,需要一定的數(shù)學(xué)能力計(jì)算出入射角和反射角,并且在球球與其他精靈碰撞中定義出球球的反彈方向、在畫布1被劃動(dòng)時(shí)定義出上下左右車的X坐標(biāo)和Y坐標(biāo)的范圍、在當(dāng)方向傳感器方向改變時(shí)定義出上下左右車的位置。由于定義時(shí)變量很多,需要再三核對(duì)定義的X、Y坐標(biāo)是否正確,需要通過連接AI伴侶來檢測(cè)。本游戲的計(jì)時(shí)器功能部分,采用的是計(jì)時(shí)器組件和數(shù)字滑動(dòng)條的組件,通過對(duì)計(jì)時(shí)器組件的定義可以使得游戲時(shí)間設(shè)定為60秒,并且通過數(shù)字滑動(dòng)條進(jìn)行倒計(jì)時(shí),當(dāng)數(shù)字滑動(dòng)條滑動(dòng)完事先設(shè)定的時(shí)間,游戲結(jié)束??傊ㄟ^對(duì)彈球游戲的設(shè)計(jì)和開發(fā),讓本人對(duì)AppInventor這門語言有了更深層次的了解,讓本人對(duì)基于Google的AppInventor應(yīng)用有了更深的了解和認(rèn)識(shí),進(jìn)一步掌握了AppInventor編程的技巧,以及各種框架技術(shù)的應(yīng)用。并且,本系統(tǒng)也為將來自己做程序開發(fā)提供了一次親自鍛煉機(jī)會(huì),鍛煉自己的思維模式和開發(fā)技術(shù),這些能力只有在自己親自動(dòng)手操作中才能一點(diǎn)點(diǎn)積累出來,同時(shí)也是將書本知識(shí)和實(shí)踐操作結(jié)合的一種很有效的方式,提高自身綜合實(shí)力,為今后程序開發(fā)之路打好基礎(chǔ)。致謝本畢業(yè)設(shè)計(jì)在老師的耐心指導(dǎo)幫助下完成的。在整個(gè)畢業(yè)設(shè)計(jì)過程中,不管是從選題還是從分析設(shè)計(jì)或者是代碼實(shí)現(xiàn)亦

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論