www.pudn.com > j2me-jianhun.rar > TI.java


/*计时器*/ 
import java.util.TimerTask; 
public class TI extends TimerTask 
{ 
	MGC m; 
	int type;//延迟的类型。 
	int s;//攻击动作的序号 
	int n;//当前被攻击的精灵序号 
	int j; 
	public TI(MGC g,int i) 
	{ 
		this.m=g; 
		this.type=i; 
		this.s=1; 
		this.n=0; 
	} 
	public void run() 
	{ 
		if(MGC.running) 
		{			 
			switch(type) 
			{ 
        case -2://天气 
        m.isWeather=true; 
        if(n%1000==0) 
        { 
        	s=m.rR(4); 
        	m.snow=new int[15][10]; 
        	for(int i=0;im.lm) 
					m.l=m.lm; 
					m.spi[0].l=m.l; 
					m.repaint(); 
					break; 
					case 5: 
					m.spic0=null; 
					m.an=4; 
					m.repaint(); 
					m.cancelATW(); 
					break; 
					default: 
					break; 
				} 
				s++; 
				break;				 
				case 11://回气 
				switch(s) 
				{ 
					case 1: 
					m.spic0=m.spic[4]; 
					m.sx=16; 
					m.sy=144; 
					m.repaint(); 
					break; 
					case 2: 
					m.sy=128; 
					m.repaint(); 
					break; 
					case 3: 
					m.sy=144; 
					m.repaint(); 
					break; 
					case 4: 
					m.sy=128; 
					m.m+=m.mm*20*m.s[10]/100; 
					if(m.m>m.mm) 
					m.m=m.mm; 
					m.repaint(); 
					break; 
					case 5: 
					m.spic0=null; 
					m.an=4; 
					m.repaint(); 
					m.cancelATW(); 
					break; 
					default: 
					break; 
				} 
				s++; 
				break;			 
				case 8://战斗中攻击顺序的切换 
				if(m.atm&&!m.am&&m.atw==null)//在战斗场景中,没有战斗菜单并且没有攻击行为的情况下 
				{ 
					int i; 
					/*先判断战斗的结果*/ 
					for(i=4;i<8;i++) 
					{ 
						if(m.spi[i]!=null) 
						break; 
					} 
					if(i==8)//战斗胜利 
					{ 
						if(!m.win) 
						{ 
							if(!m.pm) 
							{ 
								m.win=true; 
								m.showW=true; 
								m.update=true; 
								m.atm=false; 
								if(GM.playOn) 
								{ 
									GM.sc.stopSound(m.attack); 
									m.map=GM.sc.createPlayer("/1.mid",1000); 
									GM.sc.playSound(m.map); 
								}								 
								for(int k=1;k<4;k++) 
								m.spi[k]=null; 
								if(m.tran) 
								{ 
									m.tran=!m.tran; 
									m.lm=m.le*m.le+10*m.le+60; 
									m.l=m.l-m.l*10*m.s[8]/(100+10*m.s[8])>m.lm?m.lm:(m.l-m.l*10*m.s[8]/(100+10*m.s[8])); 
									m.d=5*m.le+2; 
									m.D=m.d+m.addPd+m.addPdP*m.d/100; 
								} 
								m.repaint(); 
							} 
						} 
					} 
					else//主角阵亡 
					{ 
						if(m.l==0) 
						{ 
							if(!m.pm) 
							{ 
								m.die=true; 
								m.atm=false; 
								if(GM.playOn) 
								{ 
									GM.sc.stopSound(m.attack); 
									m.map=GM.sc.createPlayer("/1.mid",1000); 
									GM.sc.playSound(m.map); 
								}												 
								for(int k=1;k<8;k++) 
								m.spi[k]=null; 
								if(m.tran) 
								{ 
									m.tran=!m.tran; 
									m.lm=m.le*m.le+10*m.le+60; 
									m.l=m.l-m.l*10*m.s[8]/(100+10*m.s[8])>m.lm?m.lm:(m.l-m.l*10*m.s[8]/(100+10*m.s[8])); 
									m.d=5*m.le+2; 
									m.D=m.d+m.d*m.addPdP/100+m.addPd; 
								} 
								m.repaint(); 
							} 
						} 
						else 
						/*下面是对攻击顺序的切换*/ 
						if(m.an<3&&m.an>0) 
						{ 
							if(m.spi[m.an]!=null) 
							m.sat(m.an+20); 
							else 
							m.an=m.an==2?1:0; 
						} 
						else 
						if(m.an==0) 
						{ 
							m.am=true; 
							/*判断隐身的回合数*/ 
							if(m.t) 
							{ 
								m.count++; 
								if(m.count==1+m.s[6]) 
								m.t=!m.t; 
							} 
							else 
							if(m.tran) 
							{ 
								m.count++; 
								if(m.count>m.s[8]) 
								{ 
									m.tran=!m.tran; 
									m.lm=m.le*m.le+10*m.le+60; 
									m.l=m.l*80/100>m.lm?m.lm:m.l*80/100; 
									m.spi[0].l=m.l; 
									m.spi[0].d=5*m.le+2; 
									m.d=m.spi[0].d; 
								} 
							} 
							m.repaint(); 
						} 
						else 
						{ 
							while(m.an<8) 
							{ 
								if(m.spi[m.an]!=null) 
								{ 
									m.sat(12); 
									break; 
								} 
								else 
								m.an++; 
							} 
							if(m.an>7) 
							m.an=2;	 
						} 
					} 
				} 
				break; 
				case 9://敌人攻击 
				if(s==1) 
				{ 
					for(int i=3;i>=0;i--) 
					{ 
						if(m.spi[i]!=null) 
						{ 
							if((i==0&&!m.t)||i!=0) 
							{ 
								m.spi[j].x=m.spi[i].x+16; 
								m.spi[j].y=m.spi[i].y/32*32; 
								m.spi[j].p++; 
								if(i!=0&&m.spi[j].lv==15) 
								m.spi[i].l-=2*m.spi[j].d; 
								else 
								m.spi[i].l-=m.spi[j].d; 
								if(m.spi[i].l<0) 
								m.spi[i].l=0; 
								m.l=m.spi[0].l; 
								if(i==3&&m.spi[j].lv!=15) 
								m.spi[j].l-=m.spi[j].d*10*m.s[5]/100; 
								if(m.spi[j].l<0) 
								m.spi[j].l=0; 
								m.repaint(); 
								n=i; 
								break; 
							} 
							else 
							s=4; 
						} 
					} 
				} 
				else 
				if(s==2) 
				{ 
					m.spi[n].x-=5; 
					if(n==0) 
					m.spi[0].p=141; 
					m.repaint(); 
				} 
				else 
				if(s==3) 
				{				 
					m.spi[n].x+=5; 
					m.spi[j].x=128; 
					m.spi[j].y=(j-4)*32+((m.spi[j].lv-1)/3==1?15:0)+64; 
					m.spi[j].p--;		 
					if(n==0) 
					{ 
						if(!m.tran) 
						m.spi[0].p=130; 
						else 
						m.spi[0].p=150; 
					} 
					if(m.spi[n].l==0) 
					m.spi[n]=null; 
					if(m.spi[j].l==0) 
					{ 
						if(m.spi[0].l>0) 
						{ 
							m.sn+=100*m.spi[j].lv*m.spi[j].lv/m.le; 
							m.nn+=4*m.spi[j].lv*m.spi[j].lv; 
						} 
						m.spi[j]=null;				 
					} 
					m.repaint(); 
				} 
				else 
				{ 
					m.an++; 
					if(m.an>7) 
					m.an=2;				 
					m.repaint(); 
					m.cancelATW();				 
				} 
				s++; 
				break;			 
				case 7: 
				m.move(); 
				break; 
				case 4://火球攻击 
				switch(s) 
				{ 
					case 1: 
					for(int i=0;i<4;i++) 
					{ 
						if(m.spi[i+4]!=null) 
						{ 
							m.sx=m.spi[i+4].x; 
							m.sy=m.spi[i+4].y-16; 
							m.spic0=m.spic[3]; 
							m.repaint(); 
							n=i; 
							break; 
						} 
					} 
					break; 
					case 2: 
					m.sy+=8; 
					m.repaint(); 
					break; 
					case 3: 
					m.sy+=8; 
					m.spic0=m.spic[0]; 
					m.repaint(); 
					break; 
					case 4: 
					m.sy-=2; 
					m.repaint(); 
					break; 
					case 5: 
					m.sy+=2; 
					if(m.spi[n+4].lv!=15) 
					m.spi[n+4].l-=(5*m.s[0]*m.s[0]+15)*(100+m.stealB)/100; 
					if(m.spi[n+4].l<0) 
					m.spi[n+4].l=0;				 
					m.repaint(); 
					break; 
					case 6: 
					m.spic0=null; 
					if(m.spi[n+4].l==0) 
					{ 
						m.sn+=100*m.spi[n+4].lv*m.spi[n+4].lv/m.le; 
						m.nn+=4*m.spi[n+4].lv*m.spi[n+4].lv;					 
						m.spi[n+4]=null; 
					} 
					m.repaint(); 
					break; 
					case 7:	 
					m.an=4; 
					m.repaint(); 
					m.cancelATW(); 
					break; 
					default: 
					break;							 
				} 
				s++; 
				break; 
				case 5://落星攻击 
				s++; 
				m.repaint(); 
				break; 
				case 6://风残攻击 
				s++; 
				m.repaint(); 
				break; 
				default://普通攻击 
				if(s==1) 
				{ 
					for(int i=0;i<4;i++) 
					{ 
						if(m.spi[i+4]!=null) 
						{ 
							m.spi[type].x=m.spi[i+4].x-16; 
							m.spi[type].y=m.spi[i+4].y; 
							m.spi[type].p++; 
							if(type==0) 
							{ 
								if(m.spi[i+4].lm.lm) 
								m.l=m.lm; 
								m.spi[0].l=m.l; 
							} 
							m.spi[i+4].l-=m.spi[type].d;			 
							if(m.spi[i+4].l<0) 
							m.spi[i+4].l=0; 
							m.repaint(); 
							n=i; 
							break; 
						} 
					} 
				} 
				else 
				if(s==2) 
				{ 
					m.spi[n+4].x+=5; 
					m.repaint(); 
				} 
				else 
				if(s==3) 
				{ 
					m.spi[n+4].x-=5; 
					m.spi[type].x=16; 
					m.spi[type].y=96-32*type+(type==1?16:0)+64; 
					m.spi[type].p--;				 
					if(m.spi[n+4].l==0) 
					{ 
						m.sn+=100*m.spi[n+4].lv*m.spi[n+4].lv/m.le; 
						m.nn+=4*m.spi[n+4].lv*m.spi[n+4].lv; 
						m.spi[n+4]=null; 
					} 
					m.repaint();			 
				} 
				else 
				{ 
					m.an--; 
					if(m.an<0) 
					m.an=4; 
					m.repaint(); 
					m.cancelATW(); 
				} 
				s++; 
				break; 
			} 
		} 
	} 
}