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

📄 swordcanvas.java

📁 j2me手机游戏光盘文件 压缩包里有说明文件
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
					screen[ii+16]=Image.createImage(16,16);
					g1=screen[ii+16].getGraphics();
					g1.drawImage(screenPic,-(ii+68)%10*16,-(ii+68)/10*16,0);
					g1=null;
				}
				break;				
				case 5:
				screen=new Image[22];
				for(int ii=0;ii<6;ii++)
				{
					screen[ii+16]=Image.createImage(16,16);
					g1=screen[ii+16].getGraphics();
					g1.drawImage(screenPic,-(ii+77)%10*16,-(ii+77)/10*16,0);
					g1=null;
				}
				break;				
				case 6:
				screen=new Image[19];
				for(int ii=0;ii<3;ii++)
				{
					screen[ii+16]=Image.createImage(16,16);
					g1=screen[ii+16].getGraphics();
					g1.drawImage(screenPic,-(ii+83)%10*16,-(ii+83)/10*16,0);
					g1=null;
				}
				break;
				default:
				break;				
			}
			for(int ii=0;ii<16;ii++)
			{
				screen[ii]=Image.createImage(16,16);
				g1=screen[ii].getGraphics();
				g1.drawImage(screenPic,-ii%10*16,-ii/10*16,0);
				g1=null;
			}			
			screenPic=null;

			if(imgNPC==null)
			imgNPC=Image.createImage("/NPCSprite.png");
			if(spic==null)
			{
				spic=new Image[6];
				for(int i=0;i<6;i++)
				spic[i]=Image.createImage("/"+String.valueOf(i)+".png");
			}
			if(imgHero==null)
			imgHero=Image.createImage("/player.png");
			if(atpic==null)
			atpic=Image.createImage("/attackSprite.png");
		}
		catch(java.io.IOException ioe)
		{
		}
	}		

	int getExperience(int s)
	{
		return(s*(s+1)*(2*s+1)*25/6);
	}

	public void changeMap(int l)
	{
		isTranMenu=false;
		sl=l;
		x=startX[sl];
		y=startY[sl];
		if(x>=w/2)
		{
			if(x<=W[sl]*16-w/2)
			x0=x-w/2;
			else
			x0=W[sl]*16-w;
		}
		else
		x0=0;
		if(y>=h/2)
		{
			if(y<=H[sl]*16-h/2)
			y0=y-h/2;
			else
			y0=H[sl]*16-h;
		}
		else
		y0=0;		
		is=getClass().getResourceAsStream("/Screen"+toString(sl)+".dat");

		readMap(is);
		if(sl!=6)
		{
			is=getClass().getResourceAsStream("/sprite"+toString(sl)+".dat");
			readSprite(is);
		}
		changeMapTask=null;
		changeMapTask=new TimerTask(this,13);
		timer.schedule(changeMapTask,0,200);
		isChange=true;
	}

	public void cancelMove()
	{
		moveTask.cancel();
		moveTask=null;
	}
	public void cancelAttackTask()
	{
		attackTask.cancel();
		while(attackTask.cancel())
		{
		}
		attackTask=null;
	}

	public void move()
	{
		if(direction%3==0&&step==0)//||direction%3==0)
		{
			if(getMapMark()>1&&getMapMark()<10)//对话NPC出现的Tile
			{
				if(getMapMark()==4)
				{
					if(tn[0]==10&&tn[1]==5&&tn[2]==10&&tn[3]==5)
					message(4);
				}
				else
				message(getMapMark());
				cancelMove();
				direction=direction/3*3;
				repaint();
			}	
			else
			if(getMapMark()==99)//场景出入口
			{
				if(hasBoat)
				{
					isTranMenu=true;
					i=0;
				}
				else
				strTip="请去找船工买船";
				cancelMove();
				direction=direction/3*3;				
				repaint();
			}
			else
			if(getMapMark()==97)
			{
				cancelMove();
				if(tn[0]==10&&tn[1]==5&&tn[2]==10&&tn[3]==5&&tn[4]==20)
				setAttack(1,15);
				else
				{
					isTranMenu=true;
					direction=direction/3*3;
					repaint();
				}		
			}
			else
			if(getMapMark()==98)
			{
				cancelMove();
				int ii=getRandom(2*sl+1)*10;
				gold+=ii*(2*sl+1);
				strTip=ii>0?"获得"+toString(ii*(2*sl+1))+"两银子":"一无所获";
				switch(direction/3)
				{
					case 1:
					if(y<H[sl]*16-32)
					mapArray[((y+31)/16+1)*W[sl]+x/16]=mapArray[(y+31)/16*W[sl]+x/16];
					break;
					case 0:
					if(x!=0)
					mapArray[(y+31)/16*W[sl]+x/16-1]=mapArray[(y+31)/16*W[sl]+x/16];
					break;
					case 3://向右
					if(x!=W[sl]*16-16)
					mapArray[(y+31)/16*W[sl]+x/16+1]=mapArray[(y+31)/16*W[sl]+x/16];
					break;
					case 2://向上
					if(y!=0)
					mapArray[((y+31)/16-1)*W[sl]+x/16]=mapArray[(y+31)/16*W[sl]+x/16];
					break;
				}
				repaint();				
			}		
			else
			if(getMapMark()>10&&getMapMark()<21)
			{
				setAttack(getEnemyNum(),getMapMark()-10);
				if(!isFighting)
				{
					if(direction%3==0&&step==0)
					{
						direction+=1;
						step=1;
					}
					if(direction%3==0&&step==1)
					{
						direction+=2;
						step=0;
					}
					if(direction%3==1||direction%3==2)
					direction=direction/3*3;
					switch(direction)
					{

						case 7://向上1
						y-=speed;
						if(y0>0&&y-y0<=h/2)
						y0-=speed;
						repaint();
						break;
						case 4://向下1
						y+=speed;
						if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
						y0+=speed;
						repaint();
						break;
						case 1://向左1
						x-=speed;
						if(x0>0&&x-x0<=w/2)
						x0-=speed;
						repaint();
						break;
						case 10://向右1
						x+=speed;
						if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
						x0+=speed;
						repaint();
						break;
						default://静止状态
						repaint();
						break;
					}				
				}
				else
				{
					switch(direction/3)
					{
						case 0://向左
						x-=16;
						break;
						case 1://向下
						y+=16;
						break;
						case 2://向上
						y-=16;
						break;
						case 3://向右
						x+=16;
						break;
					}
					if(x>=w/2)
					{
						if(x<=W[sl]*16-w/2)
						x0=x-w/2;
						else
						x0=W[sl]*16-w;
					}
					else
					x0=0;
					if(y>=64)
					{
						if(y<=H[sl]*16-h/2)
						y0=y-h/2;
						else
						y0=H[sl]*16-h;
					}
					else
					y0=0;				
				}				
				cancelMove();
			}
			else
			if(getMapMark()==1)
			{
				if(direction%3==0&&step==0)
				{
					direction+=1;
					step=1;
				}
				else
				if(direction%3==0&&step==1)
				{
					direction+=2;
					step=0;
				}
				else
				if(direction%3==1||direction%3==2)
				direction=direction/3*3;
				switch(direction)
				{
					case 7://向上1
					y-=speed;
					if(y0>0&&y-y0<=h/2)
					y0-=speed;
					repaint();
					break;
					case 4://向下1
					y+=speed;
					if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
					y0+=speed;
					repaint();
					break;
					case 1://向左1
					x-=speed;
					if(x0>0&&x-x0<=w/2)
					x0-=speed;
					repaint();
					break;
					case 10://向右1
					x+=speed;
					if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
					x0+=speed;
					repaint();
					break;
					default://静止状态
					repaint();
					break;
				}
			}
			else
			{
				moveTask.cancel();
				moveTask=null;
				direction=direction/3*3;
				repaint();
			}			
		}
		else	
		{
			if(direction%3==0&&step==0)
			{
				direction+=1;
				step=1;
			}
			else
			if(direction%3==0&&step==1)
			{
				direction+=2;
				step=0;
			}
			else
			if(direction%3==1||direction%3==2)
			direction=direction/3*3;			
			switch(direction)
			{
				case 6:
				if(step==1)//向上2
				{
					y-=speed;
					if(y0>0&&y-y0<=h/2)
					y0-=speed;
					repaint();
				}
				if(step==0)//向上4
				{
					y-=speed;
					if(y0>0&&y-y0<=h/2)
					y0-=speed;
					if(!isWalking)
					cancelMove();				
					repaint();				
				}
				break;
				case 7://向上1
				y-=speed;
				if(y0>0&&y-y0<=h/2)
				y0-=speed;
				repaint();
				break;
				case 8://向上3
				y-=speed;
				if(y0>0&&y-y0<=h/2)
				y0-=speed;
				repaint();
				break;
				case 3:
				if(step==1)
				{
					y+=speed;
					if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
					y0+=speed;
					repaint();
				}
				if(step==0)
				{
					y+=speed;
					if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
					y0+=speed;
					repaint();
					if(!isWalking)
					cancelMove();				
				}	
				break;				
				case 4://向下1
				y+=speed;
				if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
				y0+=speed;
				repaint();
				break;
				case 5://向下2
				y+=speed;
				if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
				y0+=speed;
				repaint();
				break;
				case 0:
				if(step==1)
				{
					x-=speed;
					if(x0>0&&x-x0<=w/2)
					x0-=speed;
					repaint();				
				}
				if(step==0)
				{
					x-=speed;
					if(x0>0&&x-x0<=w/2)
					x0-=speed;
					repaint();
					if(!isWalking)
					cancelMove();					
				}
				break;	
				case 1://向左1
				x-=speed;
				if(x0>0&&x-x0<=w/2)
				x0-=speed;
				repaint();
				break;
				case 2://向左2
				x-=speed;
				if(x0>0&&x-x0<=w/2)
				x0-=speed;
				repaint();
				break;
				case 9:
				if(step==1)
				{
					x+=speed;
					if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
					x0+=speed;
					repaint();				
				}
				if(step==0)
				{
					x+=speed;
					if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
					x0+=speed;
					repaint();
					if(!isWalking)
					cancelMove();			
				}
				break;			
				case 10://向右1
				x+=speed;
				if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
				x0+=speed;
				repaint();
				break;
				case 11://向右2
				x+=speed;
				if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
				x0+=speed;
				repaint();
				break;
				default://静止状态
				repaint();
				break;
			}
		}
	}

	public void setAttack(int k)
	{
		attackTask=null;
		switch(k)
		{
			case 0:
			if(energy>=10*skillArray[0]) 
			{
				attackTask=new TimerTask(this,4);
				energy-=10*skillArray[0];
				isAttMenu=false;
				if(isHiding)
				{
					isHiding=!isHiding;
					SPI[0].p=130;
				}
			}
			break;
			case 1:
			if(energy>=10*skillArray[1])
			{
				attackTask=new TimerTask(this,5);
				energy-=10*skillArray[1];
				isAttMenu=false;
				if(isHiding)
				{
					isHiding=!isHiding;
					SPI[0].p=130;
				}
			}
			break;
			case 2:
			if(energy>=20*skillArray[2]&&life>=4*skillArray[2]*maxlife/100)
			{
				attackTask=new TimerTask(this,6);
				energy-=20*skillArray[2];
				life-=4*skillArray[2]*maxlife/100;
				SPI[0].life=life;
				isAttMenu=false;
				if(isHiding)
				{
					isHiding=!isHiding;
					SPI[0].p=130;
				}
			}
			break;
			case 3:
			if(energy>=(20*skillArray[3]))
			{
				SPI[1]=new Sprite(8*skillArray[3]*skillArray[3]+40,4*skillArray[3]*skillArray[3]+10);
				SPI[1].p=120;
				SPI[1].x=36;
				SPI[1].y=112+32+40;
				energy-=20*skillArray[3];
				isAttMenu=false;
				attackNumber=4;
				repaint();
			}
			break;
			case 4://召熊
			if(energy>=(30*skillArray[4]))
			{
				SPI[2]=new Sprite(20*skillArray[4]*skillArray[4]+60,skillArray[4]*skillArray[4]+7);
				SPI[2].p=100;
				SPI[2].x=36;
				SPI[2].y=64+32+40;
				energy-=30*skillArray[4];
				isAttMenu=false;
				attackNumber=4;
				repaint();
			}
			break;
			case 5:
			if(energy>=30*skillArray[5])
			{
				SPI[3]=new Sprite(10*skillArray[5]*skillArray[5]+40,0);
				SPI[3].p=110;
				SPI[3].x=36;
				SPI[3].y=32+32+40;
				energy-=30*skillArray[5];
				isAttMenu=false;

⌨️ 快捷键说明

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