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

📄 monstersprite.java

📁 一个征途的rpg小游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
import javax.microedition.lcdui.Image;
import java.util.Random;
import java.lang.Math;
/*
 * 创建日期 2005-9-9
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */

/**
 * @author 莫紫东
 * Download by http://www.codefans.net
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */

public class MonsterSprite extends ASprite {

	public int tan041=4142,tan241=24142,goldOritem;
	public final int DIR_DOWN=1;
	public final int DIR_LD=7;
	
	public final int DIR_LEFT=2;
	public final int DIR_LU=5;
	public final int DIR_RD=8;
	public final int DIR_RIGHT=4;
	public final int DIR_RU=6;
	public final int DIR_UP=3;
	private int itemat[]={0,30,70,120,200};//英雄装备攻防数组公式
	private int itemdf[]={0,20,60,110,190};
	private int down[]={0};
	private int down_seq[]={1,2,3,4};	
	public int downb_seq[]={5,6,7};
	
	HeroSprite heroSprite;	
	private int heroX,heroY;
	public boolean isAttach,isAlive,isBattle,isStop,isStopb,isWaiting,isGet=false,isgetPress=false;
	private boolean isSmart;
	private int ld[]={8};
	private int ld_seq[]={9,10,11,12};
	private int ldb_seq[]={13,14,15};
	private int left[]={16};
	private int left_seq[]={17,18,19,20};
	public int leftb_seq[]={21,22,23};
	private int lu[]={24};
	private int lu_seq[]={25,26,27,28};
	private int lub_seq[]={29,30,31};
	
	private Random random=new Random();	
	private int rd[]={32};
	private int rd_seq[]={33,34,35,36};
	private int rdb_seq[]={37,38,39};
	private int right[]={40};
	private int right_seq[]={41,42,43,44};
	public int rightb_seq[]={45,46,47};
	private int ru[]={48};
	private int ru_seq[]={49,50,51,52};
	private int rub_seq[]={53,54,55};
	
	private boolean[][] isWalkable={
			{false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false},
			{false,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,false,true,true,true,true,true,true,true,true,true,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,false,false,true,true,false,true,true,true,true,true,true,true,true,true,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false},
			{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false},
			{false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
			{false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false},
			{false,false,false,false,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false},
			{false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,true,true,true,true,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,true,true,false,false,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false},
			{false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false}
	};
	
	private int up[]={56};
	
	private int up_seq[]={57,58,59,60};
	public int upb_seq[]={61,62,63};
	
	public int x,y,dir,maxHp,hp,lv,deadlv,at,df,centerX,centerY,centerDis,heroDis,tempX,tempY,i,j,k,moveDis,stopTime,heroDir,battleSpeed,heroHp,width,height;
	
	public int luX,luY,ruX,ruY,ldX,ldY,rdX,rdY,heroAt,heroDf,heroLv,heroBd,mBd,heroMaxhp,goldforhero,redOritem;
	public char itemc;
	public MonsterSprite(Image monsterImage, int hei, int wid,int centerX,int centerY,boolean isSmart,int lv) {
		super(monsterImage, hei, wid);
		this.isAlive=true;
		System.out.println("已经装载怪物类");
		
		maxHp=100+60*(lv-1);//怪物血量和等级公式
		hp=maxHp;
		at=(lv-1)*8+40;
		df=(lv-1)*8+22;//攻防和等级公式
		
		j=0;
		k=0;
		deadlv=0;
		isWaiting=false;
		this.chgDir();
		this.isSmart=isSmart;
		this.centerX=centerX;
		this.centerY=centerY;
		this.x=centerX;
		this.y=centerY;
		this.lv=lv;
		tempX=centerX;
		tempY=centerY;
		moveDis=3600;
		stopTime=20;
		isBattle=false;
		battleSpeed=10;
		width=this.getWidth()/2;
		height=this.getHeight()/2;
		System.out.println("怪物类装载完成");
		// TODO 自动生成构造函数存根
	}	
	
	private void chgDir(){				
		dir=Math.abs(random.nextInt()%8);		
		//System.out.println(x+","+y);		
		switch(dir+1){
			case DIR_LEFT:
				this.setFrameSequence(left_seq);
				//x=x-5;
				break;
			case DIR_RIGHT:
				this.setFrameSequence(right_seq);
				//x=x+5;
				break;
			case DIR_UP:
				this.setFrameSequence(up_seq);
				//y=y-5;
				break;
			case DIR_DOWN:
				this.setFrameSequence(down_seq);
				//y=y+5;
				break;
			case DIR_LU:
				this.setFrameSequence(lu_seq);
				//x=x-3;
				//y=y-3;
				break;
			case DIR_RU:
				this.setFrameSequence(ru_seq);
				//x=x+3;
				//y=y-3;
				break;
			case DIR_LD:
				this.setFrameSequence(ld_seq);
				//x=x-3;
				//y=y+3;
				break;
			case DIR_RD:
				this.setFrameSequence(rd_seq);
				//x=x+3;
				//y=y+3;
				break;
		}
	}	
	
	
	public int doMovedraw(int heroX,int heroY,int screenHeight,int screenWidth,int heroDir,boolean iisBattle,HeroSprite heroSprite,int heroHp,int herolv,int itemlv){
	  if(this.isAlive==true){		  	 	
	  	//g.setColor(0x00FF0107);
	  	heroLv=herolv;
	  	heroMaxhp=160+(herolv-1)*40;
	  	heroAt=itemat[itemlv]+(herolv-1)*8+30;
	  	heroDf=itemdf[itemlv]+(herolv-1)*10+20;//英雄等级与能力换算公式
	  	
	  	heroBd=(at-heroDf/2)*8/10;//英雄被攻击一次所降低的血量公式
	  	mBd=(heroAt-df/2)*13/10;//怪物被攻击一次所降低的血量公式
	  	
	  	luX=(int)(x/16)+1;
		luY=(int)(y/16);
		ruX=(int)((x+30)/16)+1;
		ruY=luY;
		ldX=luX;
		ldY=(int)((y+30)/16);
		rdX=ldX;		
		rdY=ldY;		
		
	  	isWaiting=false;
		this.heroX=heroX;
		this.heroY=heroY;
		this.heroHp=heroHp;		
		this.isAttach=iisBattle;
		this.heroDir=heroDir;
		this.heroSprite=heroSprite;	
		
		centerDis=(int)((tempX-x)*(tempX-x)+(tempY-y)*(tempY-y));
		heroDis=(int)((heroX-x)*(heroX-x)+(heroY-y)*(heroY-y));		
		
		switch(dir+1){			
			case DIR_LEFT:
				if(!isSmart){
					if(centerDis<moveDis){						
						i=0;
						if(isWalkable[ldX-1][ldY]){
							this.x=this.x-4;
							this.nextFrame();
						}else{
							dir=DIR_RIGHT-1;
							this.setFrameSequence(right_seq);
						}
					}else{
						this.setFrameSequence(left);
						i++;
						if(i==stopTime){
							tempX=x;
							tempY=y;
							this.chgDir();							
						}						
					}
				}else{
					if(!this.collidesWith(heroSprite,true)){
						if(isBattle==true){
							isBattle=false;
							this.setFrameSequence(left_seq);
						}						
						if(isStop==true){
							this.setFrameSequence(left_seq);
							isStop=false;
						}
						if(isWalkable[ldX-1][ldY]){
							x=x-4;
							this.nextFrame();
						}else{
							isSmart=false;
							dir=DIR_RIGHT-1;
							this.setFrameSequence(right_seq);
						}
					}else{
						isStop=true;						
						if(isBattle==false){
							isBattle=true;							
							this.setFrameSequence(leftb_seq);
							this.nextFrame();
						}else{
							if(j<stopTime-battleSpeed){
								j++;
								isStopb=true;
								this.setFrameSequence(left);
							}else{
								if(isStopb==true){
									isStopb=false;
									this.setFrameSequence(leftb_seq);
								}								
								if(this.getFrame()==2){
									if(heroHp>0){
										heroHp=heroHp-heroBd;										
									}
									j=0;
								}								
								this.nextFrame();
							}
						}
						//this.nextFrame();
						//this.setFrameSequence(left);
					}
				}
				break;
			case DIR_RIGHT:
				if(!isSmart){
					if(centerDis<moveDis){
						i=0;
						if(isWalkable[rdX+1][rdY]){
							this.x=this.x+4;
							this.nextFrame();
						}else{
							dir=DIR_LEFT-1;
							this.setFrameSequence(left_seq);
						}
					}else{
						this.setFrameSequence(right);
						i++;
						if(i==stopTime){
							tempX=x;
							tempY=y;
							this.chgDir();							
						}
					}
				}else{
					if(!this.collidesWith(heroSprite,true)){
						if(isBattle==true){
							isBattle=false;
							this.setFrameSequence(right_seq);
						}
						if(isStop==true){
							this.setFrameSequence(right_seq);
							isStop=false;

⌨️ 快捷键说明

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