RPG(角色扮演游戲)是手機游戲中的一類主要類型,也是相對來說比較麻煩的一類游戲,下面通過一系列的文章來介紹如何使用J2ME技術來開發RPG游戲。
首先讓我們來看一下游戲的骨架——程序框架的實現。程序框架主要包含三個方面:繪制結構、事件處理結構以及線程結構。在整個框架中,采用當前游戲編程中的通用的狀態控制機制,為每個界面,如菜單、幫助、游戲對話、商店界面設置一個唯一的狀態值,使用該狀態值控制界面的繪制、事件的處理以及線程處理。
在程序的實現上為了通用,以MIDP1.0為基礎來進行制作,這個要比使用MIDP2.0的Game API實現起來要復雜一些。
在類結構的劃分上,為了節約減小jar文件大小,把這個程序代碼劃分為兩個類,一個MIDlet類,一個界面類,所有邏輯代碼以及線程實現均放置在界面類中。
下面是MIDlet類的代碼,主要實現顯示界面、處理手機來電、釋放資源以及退出功能,線程啟動放在界面類中實現。源代碼如下:
package myrpg;
import Javax.microedition.midlet.*;
import Javax.microedition.lcdui.*;/**
* RPG結構的MIDlet類
* 包含如下功能:
* 1、顯示界面
* 2、手機來電處理
* 3、釋放資源
* 4、退出方法*/
public class MyRPGMIDlet extends MIDlet {
/**MyRPGMIDlet對象,用於實現退出功能*/
static MyRPGMIDlet instance;
/**界面類對象*/
MyRPGCanvas mainScreen = new MyRPGCanvas();
public MyRPGMIDlet() {
//初始化
instance = this;
//顯示界面Display.getDisplay(this).setCurrent(mainScreen);
}public void startApp() {
//開始或繼續游戲
if (mainScreen != null) {
mainScreen.startGame();
}
}public void pauseApp() {
//暫停游戲
if (mainScreen != null) {
mainScreen.pauseGame();
}
}public void destroyApp(boolean unconditional) {
//釋放資源
if (mainScreen != null) {
mainScreen.destroyGame();
mainScreen = null;
}
}/**
* 退出方法
*/public static void quitApp() {
instance.destroyApp(true);
instance.notifyDestroyed();
instance = null;
}
}
游戲邏輯和界面繪制以及控制都放在一個類MyRPGCanvas中,這樣實現沒有使用面向對象容易修改和擴展,但是通過結構化代碼,還是可以保證較高的可讀性以及維護性。在MyRPGCanvas中,通過狀態變量status控制界面的繪制以及線程邏輯,為了清晰,把每個處理邏輯都封裝成一個方法,如果方法比較復雜還可以繼續拆分為多個方法。
關於繪制部分,如果每個界面都具有一張不透明的背景圖片的話,可以省略清屏功能,這樣可以提高程序的執行效率。
關於線程部分主要實現了暫停控制,通過isPaused變量來控制邏輯是否執行,從而實現暫停功能,並實現精確的延時。
關於資源加載和銷毀,如果機器的內存不是很緊張的話,可以一次加載,如果內存比較緊張的話,需要編寫專門的代碼控制資源的加載和銷毀。