科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用J2ME技术开发RPG游戏之程序框架

使用J2ME技术开发RPG游戏之程序框架

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

RPG(角色扮演游戏)是手机游戏中的一类主要类型,也是相对来说比较麻烦的一类游戏。本文介绍使用J2ME技术来开发RPG游戏的程序框架设计部分。

作者:陈跃峰 来源:Csdn博客 2007年9月4日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共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) {}

}

}

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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章