⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ti.java

📁 《剑魂》经典的手机RPG源代码
💻 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;i<m.snow.length;i++)
        	for(int j=0;j<m.snow[0].length;j++)
        	m.snow[i][j]=30000;
        }
        if(n==60000)
        n=0;
        n++;
        m.repaint();
        break;
				case 13://切换场景
				s++;
				if(s==12)
				m.change=false;
				m.repaint();
				break;
				case 10://回血
				switch(s)
				{
					case 1:
					m.spic0=m.spic[5];
					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.l+=(m.le*m.le+10*m.le+60)*15*m.s[9]/100;
					if(m.l>m.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].l<m.D)
								m.l+=m.spi[i+4].l*m.stealB/100;
								else
								m.l+=m.D*m.stealB/100;
								if(m.l>m.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;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -