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

正文內容

基于j2me的手機游戲逃亡者的設計與實現-資料下載頁

2024-12-01 22:07本頁面

【導讀】近年來,因特網在國內迅速普及,導致了網絡游戲的高速發(fā)展。尤其是國內外巨大的手機擁。有量,更是讓商家看到了商機,手機游戲市場利潤將會十分豐厚。都紛紛開始了各自的應戰(zhàn)準備,以便搶占商機。而國內游戲開發(fā)商,如盛大、網易等公司,紛紛躋身手機游。新浪、搜狐等著名的門戶網站,也紛紛涉足手機游戲領域,相。游戲開發(fā)的步伐。目前SUN公司的J2MECLDC/MIDP環(huán)境和高通公司的。中國電信業(yè)巨頭中國移動建立了無線Java增值服務體系,推出。等豐富的數據服務。中國移動用戶只要使用支持Java的手機,通過GPRS的無。Java語言編寫的應用程序。而中國聯(lián)通與高通公司合作,采用高通公司的。用下載服務器上以無線方式下載應用程序。

  

【正文】 (this).setCurrent(menuList)。 //顯示游戲菜單 } 從游戲中切換到菜單,需要中止游戲線程并且告知菜單游戲正在進行中,以便讓菜單添加繼續(xù)游戲的選項: void GameCanvasMenu() { ()。 //暫停游戲線程 (true)。 //告知菜單游戲已經開始(暫停狀態(tài)) (this).setCurrent(menuList)。 //顯示游戲菜單 畢業(yè)設計(論文) 第 26 頁 共 42 頁 } 顯示游戲結束畫面,需要告訴 GameOverScreen 類當前 的最好成績以及子彈的數目,同時告訴菜單游戲已經結束: void GameCanvasGameOver(long time,int BULLETS_NUM) { ()。 //中止游戲線程 (false)。 //告知游戲已經結束 (this).setCurrent(new GameOverScreen(this, time, BULLETS_NUM))。 //結束畫面 } 從游戲結束畫面返回,在屏幕上顯示菜 單: void gameOverDone() { (this).setCurrent(menuList)。 //顯示游戲菜單 } (3)最佳紀錄 讀取方法的代碼如下 : private void readRecordStore() { hasBestTime = false。 //讀取記錄還沒有獲得最好成績 RecordStore rs = null。 ByteArrayInputStream bais = null。 DataInputStream dis = null。 try { rs = (RS_NAME, false)。 //記錄名為 RS_NAME 的字符串 byte[] data = (1)。 //讀取第一條記錄 bais = new ByteArrayInputStream(data)。 dis = new DataInputStream(bais)。 bestTime = ()。 //讀取長整型值 hasBestTime = true。 //以及從記錄中獲得最 佳成績 } catch (IOException ex) { // 捕獲 IO 異常 } catch (RecordStoreException ex) { // 捕獲讀取存儲記錄異常 } finally { if (dis != null) { try { ()。 //關閉流 } catch (IOException ex) { // 捕獲 IO 異常 } } if (bais != null) { 基于 J2ME 的手機游戲 設計 第 27 頁 共 42 頁 try { ()。 //關閉流 } catch (IOException ex) { //捕獲 IO 異常 } } if (rs != null) { try { ()。 //關閉存儲 } catch (RecordStoreException ex) { //捕獲存儲異常 } } } } 除了讀取存儲之外,如果游戲產生了一個最新成績,還需要保存到數據存儲中去。保存方法如下: rivate void writeRecordStore() { RecordStore rs = null。 ByteArrayOutputStream baos = null。 DataOutputStream dos = null。 try { rs = (RS_NAME, true)。//帶開數據存儲存如果不存在則創(chuàng)建 baos = new ByteArrayOutputStream()。 //輸出字節(jié)流 dos = new DataOutputStream(baos)。 //輸出數據流 (bestTime)。 //寫入最佳成績 byte[] data = ()。 if (() == 0) //如果里面沒有記錄 { (data, 0, )。 //添加記錄 } else { (1, data, 0, )。//如果存在記錄,則將第一條設置為當前最佳成績 } } catch (IOException ex) { // 捕獲 IO 異常 } catch (RecordStoreException ex) { // 捕獲數據存儲異常 } finally { 畢業(yè)設計(論文) 第 28 頁 共 42 頁 if (dos != null) { try { ()。 //關閉流 } catch (IOException ex) { //捕獲 IO 異常 } } if (baos != null) { try { ()。 //關閉流 } catch (IOException ex) { //捕獲 IO 異常 } } if (rs != null) { try { ()。 //關閉數據存儲 } catch (RecordStoreException ex) { //捕獲數據存儲異常 } } } } 在讀取游戲或者從玩家前面的游戲記錄中獲取到成績之后,立刻寫入 rms 存儲。通過比較獲得最佳成績并保存的實現代碼如下: boolean checkBestTime(long time) { if (!hasBestTime || (time bestTime)) //如果還沒有最好成績或者當前成績比最好成績長的時候 { hasBestTime = true。 //設置標志位為真,表示有最好成績 bestTime = time。 //上面兩種 情況下,把最好成績 bestTime 替換成當前成績 time writeRecordStore()。 //保存最好成績 return true。 //返回 true 表明對最好成績進行了更新操作 } else { return false。 //返回 false 表明沒有最新的成績紀錄產生 } } 在生成最好成績之后(無論是讀取存儲或者玩家在游戲中動態(tài)產生的),就需要讓游戲結束屏幕或者高分榜知道這個最好成績: long getBestTime() 基于 J2ME 的手機游戲 設計 第 29 頁 共 42 頁 { return hasBestTime ? bestTime : 1。 } (4)停止、銷毀、退出程序 游戲的暫停、退出代碼如下: public void pauseApp() { Displayable current = (this).getCurrent()。 //獲得當前設備的顯示上下文 if (current == myCanvas) //如果屏幕上的顯示內容為游戲畫布 { ()。 //中止游戲線程 } } public void destroyApp(boolean unconditional) { if (myCanvas != null) { ()。 //在銷毀程序之前先停止游戲線程 } } private void quit() { destroyApp(false)。 notifyDestroyed()。 //告知系統(tǒng)已經銷毀程序,可以完全退出 } (5)加載圖片資源 MIDlet 中實現了根據字符串類型的文件名來加載圖片資源的通用方法,其他各個類都可以使用這個方法來加載圖片。 static Image createImage(String filename) { Image image = null。 try { image = (filename)。 //根據文件名創(chuàng)建 Image 對象 } catch ( ex) { //捕獲 IO 異常 } return image。 //返回圖片對象 image } (6)游戲特效 其代碼如下 : (mills 代表持續(xù)的時間。 ) void vibrate(int millis) { (this).vibrate(millis)。 //手機震動,持續(xù)時間為 millis } void flashBacklight(int millis) { (this).flashBacklight(millis)。 //手機背景光閃爍,持續(xù)時間為 millis } SplashScreen 類的實現 Splash 屏幕在屏幕中央顯示圖像。在第一次繪制屏幕后,它將圖像釋放作為垃圾回收(把圖片設為 null)并回調 MIDlet 進行初始化工作。三秒鐘后或第一次按鍵后,它再次回調MIDlet 顯示游戲菜單。 通過這種方法, MIDlet 可在顯示 splash 屏幕的同時進行初始化。 畢業(yè)設計(論文) 第 30 頁 共 42 頁 (1)構造函數 SplashScreen 類是一個 Canvas 類的子類,它的構造函數先獲得一個對主類的引用,以便 于回調主類的方法,然后加載閃屏圖片 ,并啟動閃屏線程。 SplashScreen( escapeeMIDlet midlet) { = midlet。 setFullScreenMode(true)。 splashImage = (/)。 new Thread(this).start()。 } (2)繪制屏幕 閃屏屏幕的繪制是在 paint 方法中完成,當顯示閃屏時會自動調用 paint 方法。注意下面 是繪制具有輪廓的文本的有用訣竅:首先用輪廓顏色把它繪制四次,分別向上、下、左、右 偏移,然后在它的正常位置用文本顏色對其繪制。在游戲主屏幕中使用該方法要小心,因為 文本繪制可能很慢,而該方法使速度減慢為原來的五分之一。 public void paint(Graphics g) { int CanvasWidth = getWidth()。 //獲得畫布寬度 int CanvasHeight = getHeight()。 //獲得畫布高度 (0x00FFFFFF)。 //畫筆顏色設置為白色 (0, 0, CanvasWidth, CanvasHeight)。 //填充整個屏幕 (0x00FF0000)。 //畫筆顏色設置為紅色 (1, 1, CanvasWidth3, CanvasHeight3)。 //在屏幕邊緣繪制一個矩形邊框 if (splashImage != null) { (splashImage, CanvasWidth/2, CanvasHeight/2, | )。 //在屏幕中央繪制閃屏圖片 splashImage = null。 //將圖片對象設置為 null,以便垃圾回收 } ((, ))。 int centerX = CanvasWidth / 2。 int centerY = CanvasHeight / 2+60。 (0x00FFFFFF)。 //將畫筆顏色設置為白色 drawText(g, centerX, centerY 1)。 //分別繪制四次,相差 1 個象素,呈現文本帶有背景的感覺 drawText(g, centerX, centerY + 1)。 drawText(g, centerX 1, centerY)。 drawText(g, centerX + 1, centerY)。 (0x00000000)。 //將畫筆顏色設置為黑色 drawText(g, centerX, centerY)。 //繪制文本 ()。 //回調 midlet 的方法,通知程序在幕后做初始化 } private void drawText(Graphics g, int centerX, int centerY) { int fontHeight = ().getHeight()。 int textHeight = 2 * fontHeight。 //文本總的高度 int topY = centerY textHeight / 2。 //topY 用于定位文本的合適位置 (逃亡者游戲 ,centerX, topY, | )。 (版本 : + (MIDletVersion), centerX,topY + fontHeight, | )。 } 基于 J2ME 的手機游戲 設計 第 31 頁 共 42 頁 (3)閃屏線程 閃屏線程的主要工作為接受玩家鍵盤事件退出或者等待 3 秒退出,代碼如下: public void run() { synchronized(this) { try { wait(3000L)。 //等待 3 秒 } catch (InterruptedException e) { //捕獲線程中斷異常 } dismiss()。 } } (4)結束線程 有兩種可能會結束閃屏線程,一為在 run 方法中線程等待 3 秒后調用, 二為玩家按下鍵 盤,觸發(fā)鍵盤事件,調用 ke
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1