程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> J2ME潛艇大戰游戲設計與實現

J2ME潛艇大戰游戲設計與實現

編輯:關於JSP


摘要
    本文給出了一個飛機射擊類(潛艇)游戲的設計過程以及相應的流程圖,並提供了Demo版源代碼下載地址,游戲在sun wtk v2.2 下調試通過。
聲明:本游戲所用的資源大多不屬於作者,代碼僅供非商業用途的學習參考。
以下為游戲的幾張截圖
740)this.width=740" border=undefined>
游戲設計
1 游戲操作流程:
    游戲的初始畫面是一個implusive的List列表格式,選擇new game以後就可以啟動游戲,游戲是以全屏方式開啟,但仍有用於暫停/開始和退出的命令響應功能鍵。在游戲當中啟動暫停,海水和海洋生物仍將繼續活動,但敵方潛艇和所有魚雷都將靜止下來,玩家的控制也將不起作用,直到游戲被再次啟動為止。從游戲狀態退出將回到菜單界面,再次選擇退出將退出程序。
以下是游戲的總體流程圖:
740)this.width=740" border=undefined>
2 算法處理
游戲自身是一個單態結構(singletone),由一個Controller來處理目前應該顯現的屏幕和狀態。主要的顯示類包括主畫面,游戲畫布,幫助畫面和一些輔助的Alert,其中最重要是游戲畫面。游戲是在MIDP 2的狀態下運行的,所以畫面繼承了GameCanvas。游戲中的角色圖層全部加載在一個遠大於手機屏幕大小的圖層管理器上。當玩家位置移動時,圖層管理器同步計算出玩家的相對位置,移動當前圖層的顯示位置。
這個游戲的本質就是在midlet啟動後把整個畫布作為一個線程,每隔25ms掃描一下用戶按鍵操作,每隔50ms掃描一次敵人和魚雷等物體的運動狀態,對於比較苛求的子彈射出實時響應,則繼承了keyPressed方法。
在掃描玩家移動操作時,按鍵編碼被傳入到玩家潛艇的響應方法。在掃描敵人和魚雷運動時,分兩步完成。
第一步,執行各個物體畫面的移動方法。程序並不為每個新增魚雷或者敵人開啟一個新線程,太多線程會造成程序的性能直線下降;而是為每一個物體類型保留一個Vector數組,每當一個新物體產生,他將首先被加入改類型所屬的數組中,然後才在圖層上畫出;當物體消除時,除了在圖層上被消除,也需要從響應數組中刪除。這樣就形成一種注冊機制,所有游戲物體的產生和消除都需要向畫布注冊,畫布擁有不同類型物體的所有“名單”,所以,當執行移動命令時,只需要遍歷各個類型數組,依次執行其中每個元素的移動方法即可。
第二步,就是一般意義上重畫,這裡使用flushGraphics()替代了傳統的repaint(),由於本游戲是以導入圖片為操作對象,圖片位置的更改已經在第一步被執行,所以沒有怎麼涉及到象素級的重畫,只是在游戲初始化狀態時需要加載各個物體數組所對應的圖層到新的圖層管理器。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved