freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于j2me技術(shù)的手機(jī)游戲開(kāi)發(fā)——瘋狂賽車畢業(yè)論文-資料下載頁(yè)

2025-06-24 02:55本頁(yè)面
  

【正文】 useApp() { if (gM != null) ()。 // 使線程暫停 (this).setCurrent(())。// 把顯示權(quán)交給當(dāng)前畫布 } public void destroyApp(boolean un) { if (gM != null) ()。 // 在銷毀程序之前先停止游戲線程 }從游戲主菜單中選擇退出選項(xiàng),從而退出。代碼如下: void mainMenuExit() { destroyApp(false)。 notifyDestroyed()。// 告知系統(tǒng)已經(jīng)銷毀程序,可以安全退出了 } 游戲特效因?yàn)橹挥蠱IDlet類能夠訪問(wèn)Display對(duì)象,因此通常將振動(dòng)、背景光等特效放置在這個(gè)類里面,其代碼如下,times為代表持續(xù)的時(shí)間。代碼如下:void virbate(int times) { (this).vibrate(times)。// 手機(jī)振動(dòng),持續(xù)時(shí)間為times } void flashBacklight(int times) { (this).flashBacklight(times)。// 手機(jī)背景光閃爍續(xù)時(shí)間為times } 游戲閃屏的實(shí)現(xiàn)本游戲制作了兩個(gè)閃屏(Splash),分別用來(lái)顯示畢設(shè)信息和游戲信息。畢設(shè)信息閃屏要求居中顯示校名、?;?、學(xué)院、指導(dǎo)老師與學(xué)生等內(nèi)容,率;游戲信息閃屏則顯示游戲 Logo 及游戲版本。兩個(gè)閃屏界面在模擬器中的顯示見(jiàn)圖46和圖47。 圖46 畢設(shè)信息閃屏界面圖47 游戲相關(guān)信息界面閃屏類都繼承自 Canvas,并設(shè)定為全屏模式,在 paint(Graphics g)方法中定義內(nèi)容。我們先使用了 ()方法獲得屏幕的高度,內(nèi)容居中顯示簡(jiǎn)單得多,只需計(jì)算出屏幕的水平中心坐標(biāo),并在繪制的時(shí)候?qū)?duì)其參數(shù)設(shè)置為 | 即可。代碼如下: public void paint(Graphics g) { int x = 0。 int y = 20。 // 設(shè)定y軸起始繪制位置 x = getWidth() / 2。// 計(jì)算x軸起始繪制位置 (0, 0, 0)。 (0, 0, getWidth(), getHeight())。 for (int x1 = 0。 x1 240。 x1++) (backGround, x1, 0, 20)。// 繪制圖像 // 在設(shè)定好的位置繪制?;? (g, (getWidth() ()) / 2, 130, , 0)。 Font font = (, , )。 (font)。 for (int i = 0。 i 。 i++) { (0xFF0000)。 // 在設(shè)定好的位置繪制畢業(yè)設(shè)計(jì)信息 (SPLASH_TEXT[i], x, y, | )。 y += () + SPLASH_ROW_SPACING。 } (1, press any key, g, 30, 270)。// 利用對(duì)象成員的方法繪制文字信息 }閃屏出現(xiàn)后按任意鍵可以切換到下一屏幕,也可以在一定時(shí)間后自動(dòng)切換。本游戲設(shè)定的閃屏顯示時(shí)間為 3 秒,延時(shí)切換是通過(guò) Timer 類與 TimerTask 類實(shí)現(xiàn)的。在 start()方法被調(diào)用的時(shí)候此計(jì)時(shí)器開(kāi)始生效,并加入一個(gè)計(jì)劃任務(wù),讓它在 3 秒后調(diào)用 dismiss()方法。在 dismiss()方法中,我們?nèi)∠?jì)時(shí)器任務(wù),并調(diào)用下一個(gè)該閃屏類的對(duì)象成員mi的splash2splash()方法由第一個(gè)閃屏切換到第二個(gè)閃屏。要實(shí)現(xiàn)按任意鍵切換到下一屏幕只須要在 keyPressed(int keyCode)方法中調(diào)用 dismiss ()即可。代碼如下: void start() { if (ti != null) ()。 ti = new Timer()。 TimerTask dT = new TimerTask() { public void run() { if (ti != null) dismiss()。 } }。 (dT, 30000L)。// 啟動(dòng)定時(shí)任務(wù) } private void dismiss() { ()。// 取消定時(shí)任務(wù) (ne)。// 由第一個(gè)閃屏切換到第二個(gè)閃屏}游戲信息閃屏類SplashCanvas類的實(shí)現(xiàn)方法和畢設(shè)信息類的實(shí)現(xiàn)方法基本一樣只是對(duì)paint(Graphics g)方法和dismiss()方法進(jìn)行了修改。修改后的代碼paint(Graphics g)方法如下: public void paint(Graphics g) { (0, 0, 0)。 (0, 0, getWidth(), getHeight())。 // 繪制背景圖像 (backGround, (getWidth() ()) / 2, (getHeight() ()) / 2, 20)。 (1, crazy, g, 25, 18)。 // 利用對(duì)象成員mi的方法繪制文字信息 (1, racing car , g, 40, 39)。 (1, v 100, g, 140, 56)。 (1, press any key, g, 30, 260)。 }dismiss方法將回調(diào)MIDlet類的splashScreenDone()方法。Dismiss()方法如下: private void dismiss() { ()。 (ne)。// 利用對(duì)象成員mi的方法進(jìn)行切換屏幕 } 游戲菜單的實(shí)現(xiàn)菜單列表是在閃屏屏幕之后或者游戲結(jié)束時(shí),或游戲中用戶按下一個(gè)非游戲鍵(從而暫停了游戲)時(shí)顯示的屏幕。如果游戲被暫停,在菜單列表的頂部還有一個(gè)額外的菜單項(xiàng)“Continue”。游戲菜單兩種情況下的界面如圖48所示。圖48 游戲菜單在兩種情況下出現(xiàn)的界面 構(gòu)造方法MenuList類是List類的子類,并且實(shí)現(xiàn)了CommandListener接口,下面的程序首先實(shí)現(xiàn)了List類即父類的構(gòu)造方法,然后添加七個(gè)基本選項(xiàng)的方法如下: MainMenu(CrazyRacecarMIDlet mi) { super(Crazy Racecar, )。// 實(shí)現(xiàn)父類List的構(gòu)造方法, hasC = false。 = mi。 append(Game Start, null)。// 一下為添加各種選項(xiàng), append(Game Level, null)。 append(Menu option, null)。 append(How To Play, null)。 append(History Records, null)。 append(About Game, null)。 append(Exit, null)。 setCommandListener(this)。// 綁定偵聽(tīng)器偵聽(tīng)選項(xiàng)以及軟鍵 } 添加或刪除繼續(xù)游戲選項(xiàng)當(dāng)游戲中間被游戲玩家或其它外界事件中止時(shí),游戲菜單將會(huì)多一個(gè)繼續(xù)游戲的選項(xiàng)。這個(gè)選項(xiàng)添加與否取決于hasC布爾變量,該變量代表繼續(xù)游戲選項(xiàng)是否存在,也可以這樣理解游戲是否是在游戲中暫停而退到主菜單界面的。代碼如下: void addContinue() { if (!hasC) // 是否是游戲進(jìn)行中且未結(jié)束時(shí)的暫停退出 { insert(0, Continue, null)。 // 在頂部插入該選項(xiàng) hasC = true。 } } void deleteContinue() { if (hasC)// 是否是游戲進(jìn)行中且未結(jié)束時(shí)的暫停退出 { delete(0)。// 在頂部刪除該選項(xiàng) hasC = false。 } } 事件處理游戲菜單的事件處理包括兩種:,一種是Command觸發(fā)的事件,另一種是菜單選項(xiàng)的處理,例如本游戲的就屬于這一種。在本游戲菜單中的各個(gè)選項(xiàng)的事件處理方式,是根據(jù)選擇的不同回調(diào)MIDlet的相應(yīng)方法,讓MIDlet類來(lái)負(fù)責(zé)屏幕的切換。代碼如下: public void mandAction(Command co, Displayable d) { if (co == ) { String se = getString(getSelectedIndex())。// 獲得相應(yīng)的選擇項(xiàng) if ((Continue)) ()。// 繼續(xù)游戲 else if ((Game Start)) ()。// 新游戲 else if ((Game Level)) ()。// 游戲等級(jí)選項(xiàng) else if ((Menu option)) ()。// 游戲娛樂(lè)選項(xiàng) else if ((History Records)) ()。 // 歷史記錄 else if ((How To Play)) ()。// 游戲說(shuō)明 else if ((About Game)) ()。// 關(guān)于游戲 else if ((Exit)) ()。// 退出游戲 } } 游戲畫布的實(shí)現(xiàn)游戲畫布負(fù)責(zé)處理游戲的大部分工作,包括檢測(cè)用戶輸入、處理游戲邏輯和繪制游戲畫面,所有這些工作都被放置在游戲線程中完成。GameScreen是直接繼承GameCanvas類的子類并且實(shí)現(xiàn)了Runnable接口。 游戲主要常量游戲畫布中定義了大量的常量來(lái)代表游戲中相關(guān)的各個(gè)成分,例如游戲的刷新頻率、畫布的寬度和高度等。游戲中的其他常量詳見(jiàn)源代碼,主要常量如下: private final int KEY_Right_Selection = 7。// 手機(jī)右選擇鍵 private final int KEY_Left_Selection = 6。// 手機(jī)左選擇鍵 static final long FPS = 40L。// 游戲的刷新頻率 public final int Width = getWidth()。// 本地手機(jī)畫布的寬度 public final int Height = getHeight()。// 本地手機(jī)畫布的高度 final int positionY = 140。// 賽道開(kāi)始畫的起始Y坐標(biāo) final int positionX = 30。// 賽道開(kāi)始畫的起始X坐標(biāo) final int trackLong = 76。// 賽道在屏幕中的長(zhǎng)度 游戲主要變量游戲畫布中定義的如下變量的前半部分代表了游戲過(guò)程中的主要成員。其中包括了游戲的三種游戲角色,下半部分代表了鍵盤檢測(cè)時(shí)用到的主要變量如下: final CrazyRacecarMIDlet mi。// MIDlet類的實(shí)例 CarSelect se。// 車型選擇界面 AroundRoad ar[]。// 路燈等周圍景物 NormalCar os[]。// 路邊自由行走的面包車和出租車 Enemy av。// 電腦對(duì)手賽車 boolean pUP。// 上方向鍵是否被按下 boolean pDOWN。// 下方向鍵是否被按下 boolean pRIGHT。// 右方向鍵是否被按下 boolean pLEFT。// 左方向鍵是否被按下 boolean pRocketEgine。// Fire鍵是否被按下 構(gòu)造方法構(gòu)造方法主要完成初始化游戲成員及一些全局?jǐn)?shù)據(jù)的工作、獲得MIDlet類的引用以及實(shí)現(xiàn)父類GameCanvas的主要構(gòu)造方法等。其主要代碼如下: (true)。// 設(shè)置為全屏模式 = mi。 // 獲得MIDlet類的引用 se = new CarSelect(mi)。// 初始化車型選擇界面 pUP = false。 pDOWN = false。 pRIGHT = false。 pLEFT = false。 pRocketEgine = false。 ra = new Random()。// 初始化隨機(jī)數(shù)生成器 加載游戲相關(guān)的資源加載游戲資源包括初始化游戲并繪制游戲的各個(gè)部分:加載賽道數(shù)據(jù)、玩家賽車、對(duì)手賽車、賽道上的行車、賽道旁邊的樹(shù)、路燈、游戲主背景、城市的背景、賽車的方向盤和掛檔手柄的圖片等等。這些工作主要是在iniGame()方法中完成的,加載資源的部分代碼如下: try { if (!gC) { iniTrack()。// 初始化賽道數(shù)據(jù) pa = ( /image/sf/)。// 游戲的城市背景 ci = ( /image/sf/)。// 游戲的主背景 ni = new GameSprite( ( /image/fi/))。// 火箭引擎 fd = ( /image/va/)。// 游戲的fuel和demage提示 panel = ( /image/whee/)。// 放置賽車方向盤的面板 cipers = new GameSprite(Image .createImage( /image/whee/), 4, 7)。// 賽車掛檔數(shù)字 speedlevel = new GameSprite(Image .createImage( /image/whee/), 24, 32)
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1