www.pudn.com > TXWW.rar > 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; 
		} 
	} 
 
}