www.pudn.com > 20063622273380188.rar > Battle.java


import java.util.Random; 
import javax.microedition.lcdui.Graphics; 
import javax.microedition.lcdui.Image; 
import javax.microedition.lcdui.game.Sprite; 
import javax.microedition.lcdui.game.TiledLayer; 
 
class Battle 
{ 
	private Random rnd; 
	private Creature me,enemies[]; 
	private ItemManager iMgr; 
	private Sprite meS,enemiesS[],all[]; 
	private Image myImg,enemyImg,bg,tarImg; 
	private boolean isEnd,roundOff,fail; 
	private final int NormalS[]={0},HertS[]={0,4,5},AttackS[]={0,1,2,3},Attack=1,Ability=2,Menu=0; 
	private TiledLayer sbg; 
	private int select,state,target,exp,num,money; 
	private String string=""; 
	private Order orders[]; 
	private Round round; 
	 
	Battle(Creature me,ItemManager iMgr) 
	{ 
		rnd=new Random(); 
		myImg=Resourse.readImage(Resourse.ATTACK); 
		tarImg=Resourse.readImage(Resourse.TARGET); 
		this.me=me; 
		this.iMgr=iMgr; 
		sbg=new TiledLayer(10,7,Resourse.readImage(Resourse.BATTLE),16,16); 
		for(int i=0;i<5;i++) 
		{ 
			sbg.setCell(i*2,0,4); 
			sbg.setCell(i*2,1,2); 
			sbg.setCell(i*2,2,5); 
			sbg.setCell(i*2,3,8); 
			sbg.setCell(i*2,4,1); 
			sbg.setCell(i*2,5,1); 
			sbg.setCell(i*2,6,1); 
			sbg.setCell(i*2+1,0,7); 
			sbg.setCell(i*2+1,1,3); 
			sbg.setCell(i*2+1,2,6); 
			sbg.setCell(i*2+1,3,9); 
			sbg.setCell(i*2+1,4,1); 
			sbg.setCell(i*2+1,5,1); 
			sbg.setCell(i*2+1,6,1); 
		} 
	} 
	 
	void init(int mapId) 
	{ 
		isEnd=false; 
		num=Math.abs(rnd.nextInt()%4)+1; 
		enemies=new Creature[num]; 
		enemiesS=new Sprite[num]; 
		for(int i=0;i=enemies.length-1?0:target+1); 
		} 
	} 
	 
	void left() 
	{ 
		 
	} 
	 
	void right() 
	{ 
		 
	} 
	 
	void select() 
	{ 
		if(roundOff) 
		{ 
			if(state==Menu) 
			{ 
				if(select==0) 
					state=Attack; 
				else if(select==1) 
					state=Ability; 
				else if(select==2) 
					isEnd=true; 
			} 
			else if(state==Attack) 
			{ 
				orders[0]=new Order(me,enemies[target],meS,enemiesS[target],true); 
				for(int i=0;i=b.miss) 
			return true; 
		else 
		{ 
			if(Math.abs(rnd.nextInt()%b.miss)=1?orders[order].a.attack*2-orders[order].b.defence:1); 
								string=orders[order].b.name+"受到了会心一击.";				 
							} 
							else 
							{ 
								threat=(orders[order].a.attack*percent/10-orders[order].b.defence>=1?orders[order].a.attack*percent/10-orders[order].b.defence:1); 
								string=orders[order].b.name+"受到了"+threat+"点的伤害.";			 
							} 
							sleep(100); 
							orders[order].sb.nextFrame(); 
							orders[order].sb.move(3,0); 
							sleep(100); 
							orders[order].sb.nextFrame(); 
							orders[order].sb.move(-6,0); 
							sleep(100); 
							orders[order].sb.nextFrame(); 
							orders[order].sb.move(3,0); 
							sleep(700); 
						} 
						else 
						{ 
							string=orders[order].b.name+"成功的躲闪了攻击."; 
							sleep(1000); 
							threat=0; 
						} 
						orders[order].sb.setFrameSequence(NormalS); 
						orders[order].b.hp-=threat; 
						if(orders[order].b.hp<=0) 
						{ 
							string=orders[order].b.name+"被打倒了."; 
							sleep(1000); 
							exp+=orders[order].b.exp; 
							money+=orders[order].b.money; 
							orders[order].b.dead=true; 
							if(!orders[order].isMe) 
							{ 
								string="请再好好努力吧."; 
								sleep(1000); 
								fail=true; 
								isEnd=true; 
								order=orders.length;			 
							} 
						} 
					} 
					int e=0; 
					for(int i=0;i=enemies.length) 
					{ 
						string="战斗胜利."; 
						sleep(1000); 
						string=orders[order].a.name+"获得了"+exp+"点经验值."; 
						sleep(1000); 
						string=orders[order].a.name+"获得了"+money+"元金钱."; 
						orders[order].a.exp+=exp; 
						iMgr.add(new Item(money+100)); 
						sleep(1000); 
						if(orders[order].a.exp>=orders[order].a.nextExp) 
						{ 
							orders[order].a.levelup(orders[order].a.level+1); 
							string=orders[order].a.name+"升级了."; 
							sleep(1000); 
						} 
						isEnd=true; 
						order=orders.length; 
					} 
					string=""; 
					sleep(100); 
					order++; 
				} 
				roundOff=true; 
				state=Menu; 
				for(int i=0;i