📄 level.java
字号:
package org.gamecollege.j2me.rpg;
import java.util.Hashtable;
/**
* 游戏关卡 一个游戏存在多个关卡,一个关卡包含多个地图 每个关卡对应一个关卡文件。关卡文件的命名规则是:level[关卡号].lev
* 例如level0.lev代表编号为0的关卡文件。
*/
public class Level {
//关卡任务描述
String missionDesc;
//过关任务类型,比如0表示打老虎。
int missionType;
//过关需完成的任务数量,比如在打老虎一关中需杀死的老虎数量
int missionValue;
/**
* 关卡号
*/
int levelNo;
/**
* 关卡名称
*/
String name;
/**
* 关卡描述
*/
String description;
/**
* tile 宽度
*/
int tileWidth;
/**
* tile 高度
*/
int tileHeight;
/**
* 关卡中涉及到的Image key:图片文件的编号,Integer对象 value:图片文件对应的Image对象
*/
Hashtable allImages;
/**
* 关卡中涉及到的技能 key:技能编号,Integer对象 value:Skill对象
*/
Hashtable skills;
/**
* 关卡中涉及到的道具 key:道具编号,Integer对象 value:Property对象
*/
Hashtable properties;
/**
* 关卡中涉及到的NPC key:NPC编号,Integer对象 value:NPC对象
*
*/
Hashtable npcs;
/**
* 关卡当前地图
*/
Map curMap;
/**
* 连接区集合,key:Link对象编号,Integer类型 value:Link对象
*
*/
Hashtable links;
/**
* 地图集合。key:地图编号,Integer对象 value:Map对象
*
*/
Hashtable maps;
//关卡中的当前地图号
int curMapNo;
/**
* 利用LevelLoader单例,
* 装载解析关卡文件进行关卡初始化
*
*/
public void initLevel() {
LevelLoader.instance.loadLevel(this);
}
/**
* 关卡中进行地图切换的方法
* @param linker 触发地图切换动作的地图连接区
* @param hero 主角
*/
public void changeMap(Linker linker, Player hero) {
int nextMapId = linker.nextMapID;
//改变当前地图
curMap = (Map) this.maps.get(new Integer(nextMapId));
//根据Linker,改变英雄出现的行和列
MyRPGGameMIDlet.mc.myPlayer.col = linker.newHeroColNo;
MyRPGGameMIDlet.mc.myPlayer.row = linker.newHeroRowNo;
MyRPGGameMIDlet.mc.myPlayer.moveTimes=0;
curMap.heroAppearRow = linker.newHeroRowNo;
//构建新地图。
MyRPGGameMIDlet.mc.constructMap();
}
/**
* 根据过关条件,过关任务数量,判断是否过关
* @return
*/
public boolean isCompleted(){
switch (this.missionType) {
//打老虎
case 0:
if(MyRPGGameMIDlet.mc.killTigerCount>=this.missionValue){
return true;
}
return false;
default:
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -