package myrpg;
import javax.microedition.lcdui.*;
/**
* 游戏界面,包含所有游戏界面、逻辑以及事件处理
*/
public class MyRPGCanvas extends Canvas implements Runnable {
/**游戏是否处于运行状态,true代表处于运行状态*/
private boolean isRunning = true;
/**游戏是否处于暂停状态,true代表处于暂停状态*/
private boolean isPaused = false;
/**屏幕宽度*/
private int width;
/**屏幕高度*/
private int height;
/**时间间隔*/
private final int INTERVAL_TIME = 100;
/**游戏状态,使用该变量标示游戏的界面和逻辑*/
private int status;
//各个界面状态常量
/**Logo界面状态*/
private final int LOGO_STATUS = 0;
/**菜单界面状态*/
private final int MENU_STATUS = 1;
/**帮助界面状态*/
private final int HELP_STATUS = 2;
/**关于界面状态*/
private final int ABOUT_STATUS = 3;
//游戏中各个状态常量
/**地图1状态*/
private final int GAME_MAP1_STATUS = 4;
/**武器店1状态*/
private final int GAME_WEAPONSHOP1_STATUS = 5;
/**对话1状态*/
private final int GAME_DIALOG1_STATUS = 6;
public MyRPGCanvas() {
//初始化
init();
//启动线程
Thread thread = new Thread(this);
thread.start();
}
/**
* 初始化游戏
* 导入资源和初始化游戏状态
*/
private final void init() {
//获得屏幕尺寸
width = this.getWidth();
height = this.getHeight();
//初始化游戏状态,默认显示LOGO界面
status = LOGO_STATUS;
//导入图片和其他资源
}
protected void paint(Graphics g) {
//清屏
clearScreen(g);
//绘制
switch (status) {
case LOGO_STATUS:
paintLogo(g);
break;
case MENU_STATUS:
paintMenu(g);
break;
case HELP_STATUS:
paintHelp(g);
break;
case ABOUT_STATUS:
paintAbout(g);
break;
case GAME_MAP1_STATUS:
paintGame_Map1(g);
break;
case GAME_WEAPONSHOP1_STATUS:
paintGame_WeaponShop1(g);
break;
case GAME_DIALOG1_STATUS:
paintDialog1(g);
break;
}
}
/**
* 绘制LOGO界面
* @param g Graphics 画笔
*/
private final void paintLogo(Graphics g) {
}
/**
* 绘制菜单界面
* @param g Graphics 画笔
*/
private final void paintMenu(Graphics g) {
}
/**
* 绘制帮助界面
* @param g Graphics 画笔
*/
private final void paintHelp(Graphics g) {
}
/**
* 绘制关于界面
* @param g Graphics 画笔
*/
private final void paintAbout(Graphics g) {
}
/**
* 绘制游戏地图1界面
* @param g Graphics 画笔
*/
private final void paintGame_Map1(Graphics g) {
}
/**
* 绘制游戏武器店1界面
* @param g Graphics 画笔
*/
private final void paintGame_WeaponShop1(Graphics g) {
}
/**
* 绘制游戏对话1界面
* @param g Graphics 画笔
*/
private final void paintDialog1(Graphics g) {
}
/**
* 清屏
* @param g Graphics 画笔
*/
private final void clearScreen(Graphics g) {
g.setColor(0xffffff);
g.fillRect(0, 0, width, height);
}
/**
* 开始和继续游戏
*/
public void startGame() {
isPaused = false;
}
/**
* 暂停游戏
*/
public void pauseGame() {
isPaused = true;
}
/**
* 释放资源
* 包括图片、声音等资源
*/
public void destroyGame() {
}
/**
* logo界面线程逻辑
*/
private final void doLogo() {
}
/**
* 帮助界面线程逻辑
*/
private final void doHelp() {
}
/**
* 关于界面线程逻辑
*/
private final void doAbout() {
}
/**
* 菜单界面线程逻辑
*/
private final void doMenu() {
}
/**
* 游戏地图1界面线程逻辑
*/
private final void doGame_Map1() {
}
/**
* 游戏武器店1界面线程逻辑
*/
private final void doGame_WeaponShop1() {
}
/**
* 游戏对话1界面线程逻辑
*/
private final void doDialog1() {
}
public void run() {
try {
while (isRunning) {
//精确延时
long start = System.currentTimeMillis();
//逻辑处理
if (!isPaused) {
switch (status) {
case LOGO_STATUS:
doLogo();
break;
case MENU_STATUS:
doMenu();
break;
case HELP_STATUS:
doHelp();
break;
case ABOUT_STATUS:
doAbout();
break;
case GAME_MAP1_STATUS:
doGame_Map1();
break;
case GAME_WEAPONSHOP1_STATUS:
doGame_WeaponShop1();
break;
case GAME_DIALOG1_STATUS:
doDialog1();
break;
} }
//重绘
repaint();
serviceRepaints();
long end = System.currentTimeMillis();
//延时
if ((end - start) < INTERVAL_TIME) {
Thread.sleep(INTERVAL_TIME - (end - start));
}
}
} catch (Exception e) {}
}
}