资源简介
一个使用J2ME技术编写的RPG游戏Demo,包括地图绘制、人物移动和碰撞处理,以及界面切换,使用MIDP1.0实现,总体结构采用状态机模型
代码片段和文件信息
import javax.microedition.lcdui.*;
/**
* RPG游戏示例代码 实现了按键的连续移动
*/
public class RPGCanvas extends Canvas implements Runnable {
/** 游戏状态 */
private int status;
// 游戏状态设定
/** 村庄1 */
private final static int SCREEN_1 = 0;
/** 武器店 */
private final static int WEAPON_SHOP = 10;
/** 对话状态1 */
private final static int DIALOAG_1 = 100;
// 场景1地图数组
int backmap0[][] = { { 1 11 12 1 76 1 1 1 78 1 1 1 }
{ 19 20 21 22 73 80 81 1 77 68 1 1 }
{ 28 29 30 31 32 1 1 1 1 1 1 1 }
{ 37 38 39 31 41 1 1 1 1 1 54 1 }
{ 46 47 48 49 50 1 1 1 1 1 1 1 }
{ 55 74 57 58 59 1 1 1 1 1 1 1 }
{ 79 75 66 67 1 1 1 3 4 5 1 1 }
{ 1 1 1 1 1 1 1 2 13 14 1 1 }
{ 1 1 1 1 1 1 1 1 1 1 1 1 }
{ 54 27 24 24 23 83 24 24 24 24 26 54 }
{ 15 43 9 9 23 83 9 9 9 9 25 15 }
{ 54 42 33 33 23 83 33 33 33 33 34 54 }
{ 1 1 1 1 84 84 1 1 1 1 1 1 } };
// 图块常量
/** 每个图块的宽度 */
private final static int TILE_WIDTH = 16;
/** 每个图块的高度 */
private final static int TILE_HEIGHT = 16;
/** 场景1图片 */
Image screen_1 = null;
/** 地图原始图片 */
Image map0Img = null;
/** 人物原始图片 */
Image roleImg = null;
/** 人物的x坐标 */
int roleX = 100;
/** 任务的y坐标 */
int roleY = 100;
/** 人物宽度 */
private final static int ROLE_WIDTH = 16;
/** 人物高度 */
private final static int ROLE_HEIGHT = 32;
/** 人物方向 */
int direction;
/** 人物当前显示图片的序号 */
int currIndex = 0;
/** 人物连续移动的控制变量,-1代表不移动,其他方向和人物方向常量的规定相同 */
int roleMoveControl = -1;
/** 移动速度,每次2个像素 */
int speed = 4;
/** 不移动 */
private final static int NOT_MOVE = -1;
/** 人物方向常量 */
private final static int DIRE_LEFT = 9;
private final static int DIRE_RIGHT = 6;
private final static int DIRE_UP = 3;
private final static int DIRE_DOWN = 0;
/** 屏幕宽度 */
int width;
/** 屏幕高度 */
int height;
/** 可行走区域地图块序号 */
private int[] canMoveTile = { 1 2 3 4 5 13 14 23 32 41 50 59
66 67 83 };
/**武器名称*/
private String[] weaponName = {
“轩辕剑“
“浪宇刀“
“匕首“
};
/**武器价格*/
private int[] weaponPrice = {
1000
2000
100
};
public RPGCanvas() {
try {
map0Img = Image.createImage(“/map.png“);
roleImg = Image.createImage(“/player.png“);
} catch (Exception e) {
}
//全屏
this.setFullScreenMode(true);
width = this.getWidth();
height = this.getHeight();
// 启动线程
Thread th = new Thread(this);
th.start();
}
protected void paint(Graphics g) {
// 根据游戏状态实现绘制
switch (status) {
case SCREEN_1:
// 绘制场景
paintSCREEN_1(g);
// 绘制人物
paintRole(g);
break;
case WEAPON_SHOP:
paintWEAPON_SHOP(g);
break;
case DIALOAG_1:
paintDIALOAG_1(g);
break;
}
}
/**
* 绘制场景1的方法
*
* @param g
* 画笔
*/
private void paintSCREEN_1(Graphics g) {
//
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 246 2007-11-06 11:04 RPGDemo\.classpath
文件 204 2007-11-30 09:58 RPGDemo\.eclipseme
文件 249 2007-12-05 10:19 RPGDemo\.eclipseme.tmp\emulation\RPGDemo.jad
文件 14491 2007-11-20 10:04 RPGDemo\.eclipseme.tmp\emulation\RPGDemo.jar
文件 8438 2007-12-05 10:19 RPGDemo\.eclipseme.tmp\verified\classes\RPGCanvas.class
文件 911 2007-11-30 09:58 RPGDemo\.eclipseme.tmp\verified\classes\RPGMIDlet.class
文件 539 2007-11-06 11:04 RPGDemo\.project
文件 208 2007-11-06 11:04 RPGDemo\.settings\org.eclipse.jdt.core.prefs
文件 6949 2007-11-06 11:39 RPGDemo\classes\map.png
文件 2078 2007-11-06 16:24 RPGDemo\classes\pla
文件 7711 2007-12-05 10:19 RPGDemo\classes\RPGCanvas.class
文件 911 2007-11-30 09:58 RPGDemo\classes\RPGMIDlet.class
文件 6949 2007-11-06 11:39 RPGDemo\res\map.png
文件 2078 2007-11-06 16:24 RPGDemo\res\pla
文件 225 2007-11-06 11:05 RPGDemo\RPGDemo.jad
文件 10790 2007-12-05 10:19 RPGDemo\src\RPGCanvas.java
文件 632 2007-11-06 16:08 RPGDemo\src\RPGMIDlet.java
目录 0 2007-11-30 09:58 RPGDemo\.eclipseme.tmp\verified\classes
目录 0 2007-11-06 11:04 RPGDemo\.eclipseme.tmp\verified\libs
目录 0 2007-11-06 11:04 RPGDemo\.eclipseme.tmp\emulation
目录 0 2007-11-06 11:04 RPGDemo\.eclipseme.tmp\verified
目录 0 2007-11-06 11:04 RPGDemo\.eclipseme.tmp
目录 0 2007-11-06 11:04 RPGDemo\.settings
目录 0 2007-11-30 09:58 RPGDemo\classes
目录 0 2007-11-06 11:04 RPGDemo\deployed
目录 0 2007-11-06 16:24 RPGDemo\res
目录 0 2007-11-06 11:06 RPGDemo\src
目录 0 2007-11-06 11:04 RPGDemo
----------- --------- ---------- ----- ----
63609 28
............此处省略1个文件信息
评论
共有 条评论