你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
使用J2ME技术开发RPG游戏之程序框架(2)
 

具体的实现代码如下:

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) {}

}

}

这些只是一个简单的框架,包含了有些开发中的常见功能的实现,但是尚不包含按键处理方面的代码,如果大家有什么建议和意见也可以积极提出。

(编辑;aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089