畢業(yè)大學論文基于J2ME的手機游戲開發(fā)_第1頁
畢業(yè)大學論文基于J2ME的手機游戲開發(fā)_第2頁
畢業(yè)大學論文基于J2ME的手機游戲開發(fā)_第3頁
畢業(yè)大學論文基于J2ME的手機游戲開發(fā)_第4頁
畢業(yè)大學論文基于J2ME的手機游戲開發(fā)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGE22目錄TOC\o”1-3”\h\z\u第一章緒論 1HYPERLINK\l”_Toc251573639"1.1研究背景 1HYPERLINK\l”_Toc251573640”1.2研究內容 12。1J2ME簡介 3HYPERLINK\l”_Toc251573643”2.2J2ME體系結構 32.3移動信息設備簡表概述 4_Toc251573647”2。3。3CLDC和MIDP庫中的類 4_Toc251573649"2。4.1MIDPAPI概述 5HYPERLINK\l”_Toc251573650"2.4.2MIDlet應用程序 52。4。3使用定時器 6HYPERLINK\l”_Toc251573652”2。4.4永久性數(shù)據(jù)(RMS) 7HYPERLINK\l”_Toc251573653”2.4。5存儲集(RecordStore) 8HYPERLINK\l”_Toc251573654"2.4。6記錄 92。4.7異常 102。5。1UI基礎 10HYPERLINK\l”_Toc251573658"2。5。2高級UI 11HYPERLINK\l”_Toc251573659"2.5。3低級UI 11_Toc251573661"3。1貪吃蛇游戲的規(guī)則簡介以及開發(fā)環(huán)境 13HYPERLINK\l”_Toc251573662"3。1.1貪吃蛇游戲的規(guī)則簡介 133.1.2開發(fā)環(huán)境 13HYPERLINK\l”_Toc251573664”3。2詳細設計 13HYPERLINK\l”_Toc251573665"3。2.1代碼設計 14HYPERLINK\l”_Toc251573666"第四章程序的調試與運行 19HYPERLINK\l”_Toc251573667"4。1游戲的調試 194.2游戲的運行環(huán)境 20HYPERLINK\l”_Toc251573669"結束語 21RMS中發(fā)生的事件的接口,比如記錄增加,修改和刪除。2。4。5存儲集(RecordStore)記錄存儲集即一個記錄存儲的機制,表2-8中展示了完整的API.表2-8記錄存儲API方法描述存儲集訪問方法StaticRecordStoreopenRecordStroe(StringrecordName,blooeancreateIfNecessary)打開一個存儲集或者在它不存在的時候創(chuàng)建一個存儲集。VoidcloseRecordStore()關閉一個存儲集。StaticvoiddeleteRecordStore(StringrecordStoreName)刪除一個存儲集。LonggetLastModified()獲取存儲集最后被修改的時間。StringgetName()獲取存儲集的名稱。intgetNumrecords()返回存儲集當前記錄的數(shù)量。intgetSize()返回存儲集使用的總字節(jié)數(shù).intgetSizeAvailable()獲取空閑空間。intgetVersion()獲取存儲集的版本號。

續(xù)表2-8記錄存儲APIStaticString[]listRecordStores()獲取MID中你可以訪問的所有的記錄存儲集的字符串數(shù)組。記錄訪問方法intaddRecord(byte,intoffset,intnumBytes)向存儲集中加入一條新的記錄.byte[]getRecord(intrecordId)用ID來獲取一條記錄。intgetRecord(intrecorded,byte[]buffer,intoffset)把一條記錄讀取到buffer中。VoiddeletRecord(intrecorded)刪除與recordId相關的記錄。VoidsetRecord(intrecorded,byte[]newData,intoffset,intnumBytes)使用新的字節(jié)數(shù)組與recordId相關聯(lián)的內容。IntgetNextRecordID()在插入后獲取下一個記錄的ID。IntgetRecord(intrecorded)返回按字節(jié)計算的記錄存儲集當前的數(shù)據(jù)大小.RecordEnumerationenumerateRecords(RecordFilterfilter,RecordComparator,bool--eankeepUpdataed)返回一個RecordEnumerator對象。它是用來在一個記錄集合中枚舉的(使用comparator參數(shù))。與時間有關的方法VoidaddRecordListener(RecordListenerlistener)加入一個監(jiān)聽器對象,它可以在有這個記錄存儲集消息的時候被調用。VoidremoveRecordLisrener(RecordListenerlistener)移除原來用addRecordListener方法加入的監(jiān)聽器對象。記錄存儲集在與MIDlet包范圍,也就是說同一個包的任何MIDlet都可以訪問這個包中的記錄存儲集,其他包中的MIDlet甚至不能感知到別的包里記錄存儲集的存在。2。4。6記錄一個記錄就是一個字節(jié)數(shù)組,可以在里面寫任何格式的數(shù)據(jù).可以用DataInputStream、DataOutputStream往記錄中寫入數(shù)據(jù),也可以用ByteArrayInputStream和ByteArrayOutputStream。在記錄存儲集中記錄是以一種類表的結構存儲,如下圖2—2所示:

IDRecorddata(bytearray)1“John"2“64997”3[.pngimagedata]—_圖2-2RecorddataStore“A”每一個記錄和它相關的字節(jié)數(shù)組都有一個整數(shù)主鍵唯一來標識,RMS會成為記錄設定ID.頭一個寫入的ID是1,每次增加一條記錄它的ID就增加1,上圖展示了一個記錄集的簡單用法.在這個例子中,玩家的名字(字符串“John”)存儲在記錄1中,記錄2保存最高分,記錄3是先前從網(wǎng)絡上下載的緩存的圖象。2.4.7異常 RMS異常都是因為不正確的環(huán)境造成的,對于這些異常需要編寫代碼來處理問題(RecordStoreNotFoundException、RecondStoreNotOpenException、InvalidRecordIDExcepaion的情況),或者只能接受它。2.5用戶界面(LCDUI)在創(chuàng)建游戲時,MIDP允許我們使用兩種截然不同的界面系統(tǒng)——高級UI和低級UI。2。5。1UI基礎LCDUI的核心是screen的概念,它代表MID上的一個display,在任何一個時間點,只能有一個screen可見。在LCDUI中有3種類型的screen:低級UI可以通過Canvas類訪問;Form顯示一組簡單的UI組件,或者說控件;復雜組件(Complexcomponents)。2。5.2高級UI高級UI提供了MID的一個抽象接口,通過它可以獲得大量的功能。使用高級API首先創(chuàng)建組件把它們加入到屏幕,然后與它們相交互.高級UI一般劃分為兩大類:屏幕和組件。屏幕(screen)screen是一個完整類組件,它管理整個屏幕。Form是一個特殊的screen,可以在Form中由少量幾個組件來構造一個screen。列表(List)List是一個可以給用戶顯示一組備選項的組件。這個類實現(xiàn)了Javax.microedition。lcdui.Choice接口,ChoiceCroupitem也實現(xiàn)了這個接口。文本框(TestBox)TestBox組件是微型世界的字處理器,它只能輸入多行的文字。它可以讓玩家輸入多行文字、剪切、復制以及從剪切板粘帖、過濾輸入的數(shù)據(jù)。警告(Alert)可以使用它來顯示一個提示信息(因為它是一個screen,所以它接管整個屏幕)。Form和ItemForm是一種可以包含一個或者多個下面這些從Item類派生出來的組件的screen—-StringItem、ImageItem、TextField、ChoieGroup、DataField和Gauge。StringItem類運用StringItem類在Form上加入簡單的文字消息。2。5。3低級UI 低級UI提供了一個工具包來移動和繪制圖形、顯示文字、獲取直接的按鍵事件等.Canvas類Canvas又稱畫布,是一個Displayable對象,所有繪圖操作都畫在它上面。Graphics類Graphics類工具在Canvas中承擔基本的二維繪圖。二維繪圖工具drawLine采用4個參數(shù)—-直線起點的x、y坐標值和直線終點x、y的坐標值,例如:graphics.drawLine(50,0,100,0);這行代碼會從位置(50,0)到(100,0)繪制一條直線。繪制一個矩形是一個類似的過程,不同的只是需要用起點加上寬度和高度的方式來指定這個對象,可以繪制透明的或者填充的矩形,甚至可以繪制圓角的矩形.4個繪制矩形的方法是:drawRect、drawRoundedRect、fillRect和fillRoundedRect?;∈鞘褂?個參數(shù)來繪制的,前3個參數(shù)是弧所在的整個圓的外切矩形。剩下的兩個參數(shù)是startAngle和arcAngle。Angle是度數(shù),0為右側(在三點的位置)的地方,180是左側(在九點的位置)的位置。繪制文字可以使用方法drawChar、drawChars、drawString和drawSubstring在Canvas上面繪制文字。圖象和裁剪裁剪讓人可以把圖象輸出限制到顯示設備的一個特定區(qū)域中,例如,如果將輸出限制在一個從(10,10)開始到(50,50)的區(qū)域中,那么從那個時候起,沒有圖像會出現(xiàn)在顯示設備上這個區(qū)域之外的任何地方.事件響應實現(xiàn)一個或者多個按鍵事件響應方法:keyPressde、keyRleased和keyRepeated。第三章手機游戲開發(fā)過程3。1貪吃蛇游戲的規(guī)則簡介以及開發(fā)環(huán)境3.1。1貪吃蛇游戲的規(guī)則簡介在貪吃蛇游戲中,玩家操作由小方塊連接而成的蛇,去吃隨機散落在畫面內的小方塊,每吃一塊就增加一小方塊長度,要是撞壁以及撞自己的尾,就屬于失敗,如無失敗則直到通關為止。屏幕的長度的行向為11單位,縱向為18單位。在這個范圍內,玩家通過操作方向鍵來控制蛇的運動方向。該游戲的最大特色是屏幕自適應,無論各種HYPERLINK”/"\t”_blank”手機,PDA的屏幕大小如何,該游戲總是能獲得最佳的顯示效果。3。1.2開發(fā)環(huán)境(1)開發(fā)的硬件環(huán)境:CPUC1.7HZ/Maxor40G/DDR256M/CD—ROW40X(2)開發(fā)軟件:JDK1.3和J2MEWTK3.2詳細設計本游戲的操作流程(如圖3-1):用戶在啟動MIDlet后,即進入游戲主畫面,屏幕開始顯示為歡迎畫面。用戶按下[開始]按鈕后,就可以開始玩游戲。當用戶想暫停時,再次按一下[開始]按鈕,游戲就暫停了,在暫停的情況下再按[開始]按鈕,游戲繼續(xù)運行。任何時候按[退出]按鈕,游戲MIDlet都會終止.圖3-1操作流程3。2。1代碼設計(1)游戲地圖代碼設計游戲地圖是蛇的活動范圍和食物隨機散落的范圍,游戲的容器為行向為11單位,縱向為18單位,如下代碼:privatefinalintiX=10; //地圖的開始坐標privatefinalintiY=10; // privatefinalintSWIDTH=16; //圖標的寬度privatefinalintiCells=11; //地圖的列數(shù)privatefinalintiRows=18; //地圖的行數(shù)privatefinalintiBoxW=SWIDTH*iCells; //地圖的寬采用二維繪圖工具:二維繪圖工具drawLine采用4個參數(shù)-—直線起點的x、y坐標值和直線終點x、y的坐標值,例如:graphics.drawLine(50,0,100,0);這行代碼會從位置(50,0)到(100,0)繪制一條直線。繪制一個矩形是一個類似的過程,不同的只是需要用起點加上寬度和高度的方式來指定這個對象??梢岳L制透明的或者填充的矩形,甚至可以繪制圓角的矩形。4個繪制矩形的方法是:drawRect、drawRoundedRect、fillRect和fillRoundedRect。(2)貪吃蛇和食物的代碼設計屏幕的長度為行向為11單位,縱向為18單位;在這個范圍內(如圖3。3),玩家操作方向鍵控制蛇的運動方向。該游戲的最大特色是屏幕自適應,無論各種手機,PDA的屏幕大小如何,該游戲總是能獲得最佳的顯示效果.圖3-3游戲區(qū)域貪吃蛇最初由3個小正方形組成,小正方形是蛇的身體和游戲容器的組成部分.食物也由一塊小正方形組成,并且隨機散落在游戲框圖的區(qū)域內,每次只出現(xiàn)唯一的一個,待玩家操作游戲完成一個任務后面,再出現(xiàn)下個食物,小蛇每吃一個食物就增加一個長度。實現(xiàn)代碼如下:publicintgetCell(){ returniCell; } publicintgetRow(){ returniRow; }publicvoidshow(){sLabel.setVisible(true);}publicbooleanisVisible(){returnsLabel。isVisible();}publicvoidhide(){sLabel。setVisible(false);}protectedvoidsetPosition(introw,intcell){ iCell=cell; iRow=row;sLabel.setBounds(cell*SWIDTH,row*SWIDTH,SWIDTH,SWIDTH);} publicvoidmoveUp(){ if(iRow>0) setPosition(——iRow,iCell); else setTouch(); } publicvoidmoveDown(){ if(iRow〈iBoxH-1) setPosition(++iRow,iCell); else setTouch(); } publicvoidmoveLeft(){ if(iCell>0) setPosition(iRow,—-iCell); else setTouch(); } publicvoidmoveRight(){ if(iCell〈iBoxW—1) setPosition(iRow,++iCell); else setTouch(); } staticbooleangetTouch(){ returnisTouch; } staticvoidsetTouch(){ isTouch=true; } staticvoidsetImTouch(){ isTouch=false; } publicSnakeclone(){ Snaketem=newSnake(); tem。setPosition(this.getRow(),this。getCell()); returntem; }

(3)操作控制代碼設計MIDP的游戲設計,本質上就是用一個線程或者定時器產(chǎn)生重繪事件,用線程和用戶輸入改變游戲狀態(tài)。這個游戲也不例外,啟動MIDlet后,就立即生成一個重繪線程,該線程每隔50ms繪制一次屏幕。當然,重繪時有一些優(yōu)化措施,并不是屏幕上所有的像素都需要重繪,而是有所選擇,比如游戲畫布上那些已經(jīng)固定下來的就不需重繪。游戲畫布是一個CommandListener,可以接受用戶鍵盤命令,控制蛇的左移,右移,下移,上移。其代碼如下:publicvoidmove(){ hide(); if(aoSnakes[0].getRow()==Food.getRow()&&aoSnakes[0]。getCell()==Food.getCell()) eat(); SnaketempSnakes[]=newSnake[iLen-1]; for(inti=0;i〈tempSnakes.length;i++){ tempSnakes[i]=aoSnakes[i].clone(); } switch(heading){ case37: aoSnakes[0]。moveLeft(); break; case38: aoSnakes[0]。moveUp(); break; case39: aoSnakes[0]。moveRight(); break; case40: aoSnakes[0].moveDown(); break; default: break;整個游戲的流程控制體現(xiàn)在游戲畫布對象的paint()方法里.paint()根據(jù)當前的游戲狀態(tài),繪制出當時的游戲畫面。歡迎畫面和GameOver畫面的繪制相當簡單,游戲暫停畫面的繪制也相當容易,就是設立標志,讓paint()執(zhí)行的時候無需真正執(zhí)行重繪動作。

第四章程序的調試與運行4。1游戲的調試在手機游戲方面,游戲的控制和圖片的設置是游戲的基本能力,為了方便玩家操作游戲,把玩家常用的操作鍵設為游戲最常用的控制鍵,并通過J2ME簡單有效的編碼,使玩家可以重新設置自己的熟悉的鍵。本游戲不設立關卡,而是隨著游戲積分的增加,游戲將自動增加游戲的難度,如加快游戲速度和隨小蛇長度的增加,游戲的操作難度也會增大。如玩家進入游戲(如圖4—1),操作小蛇,圖4—1游戲界面圖去吃隨機散落在游戲區(qū)內的食物,每吃一個食物就增加小蛇一個單位長度,并隨著長度的增加,游戲的速度將增加,而小蛇的長度增加也會增加玩家的操作難度.如果玩家操作小蛇碰壁或者由于小蛇長度太長而蛇頭撞到小蛇的身體任何部位,均屬于失敗,玩家得重新游戲開始(如圖4—2)。但游戲將自動紀錄你的得分,并且保存你的游戲最高得分。圖4—2游戲失敗的兩種情況4。2游戲的運行環(huán)境目標硬件環(huán)境:1:顯示:96*54象素,1位顏色,大約1:1的象素比例;2:輸入:(a)單手鍵盤或者小鍵盤;(b)雙手的QWERTV鍵盤;(c)觸摸屏。3)內存(a)128KB非易失性內存,供MIDP組件使用;(b)8KB的非易失性內存,供應用程序生成的永久數(shù)據(jù)使用;(c)32KB的易失性內存,供Java堆使用.4)網(wǎng)絡

溫馨提示

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

評論

0/150

提交評論