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

📄 man.java

📁 横屏移动地图移动和人物移动横屏幕的移动初级作品
💻 JAVA
字号:
/* Man.java 主角类,包含主角的各个属性 */package Speeds;public class Man{	protected int hp;				//生命值	protected int startX,startY;	//初始位置	protected int posX,posY;		//位置	protected int mapPosX=0;		//地图位置的参考点(待mapPixPos改好后要去掉)/////////////////////!!!!!!!!!!!!!!!!!!!!!	//protected int mapPixPos=0;		//主角在地图上的绝对位置(象素点)	protected int status;			//状态:走1,走2,走3,蹲下,排雷,开枪等等	protected boolean goAhead=true;			//方向,true为向前,false为向后	private boolean beginScroll=false;	//开始滚屏的标志	private int inc=1;	private int maxCol;	private boolean addFlag=true;	protected boolean lastFrameFlag=false;	protected boolean firstFrameFlag=true;	protected boolean hurt=false;	protected boolean visible=true;	protected int appleBombNum=0;	private GameCanvas mcas=null;	//protected int offset=0;	protected short manNum=30;	protected boolean powerMan=false;		//是否无敌	public Man(int max,GameCanvas cas) {		startX=56;		startY=70;		posX=startX;		posY=startY;		mapPosX=0;		//mapPixPos=startX;						status=0;					//初始状态为右走1		maxCol=max;		mcas=cas;		hp=300;						//主角初始生命值	}	public void turnRound() {		if(goAhead && status<=3) {			status+=7;			goAhead=false;		} else if(!goAhead && status>=7 && status<=10) {			goAhead=true;			status-=7;		}	}	public void go() {		if(goAhead) {			if(status==0 || status==3) {				status=1;			}			else if(status==1) {				status=2;			}			else if(status==2) {				status=1;			}						///////////////////////////////////////////////////////////////////////////////////////			if(posX<72 || (lastFrameFlag && posX<116)) {				posX+=4;				beginScroll=true;			} else {				if(mapPosX<maxCol*8) {					mapPosX+=4;					if(mcas.bakBeginX<mcas.picsPos[mcas.gda.mapGlobe[1]][3]) {						if(mcas.gda.mapGlobe[5]==(byte)0x00) {							mcas.bakBeginX+=1;						} else {							mcas.bakBeginX+=4;						}					} else {						mcas.bakBeginX=1;					}					if(mcas.streetBeginX<mcas.picsPos[mcas.gda.mapGlobe[2]][3]) {						mcas.streetBeginX+=4;					} else {						mcas.streetBeginX=4;					}					if(mapPosX>=mcas.gda.frameNum*128-128) {						lastFrameFlag=true;					}					if(mapPosX>=4) {						firstFrameFlag=false;					}					if(posX==72 && beginScroll) {						//offset=4;						beginScroll=false;					}				}			}			if(mapPosX>=1160) {				if(mcas.gda.gameLevel<4) {					//mcas.gda.levelAddOk=false;					mcas.gda.gameLevel+=1;					mcas.showCon=3;					mcas.colW=0;					//mcas.showStory=true;					//mcas.stringCount=0;					//mcas.stringDrawOk=false;					//mcas.beginCol=0;					//System.out.println("hh,mission complete");				} else {					mcas.showCon=5;			//通关					mcas.colW=0;					//System.out.println("hahahhaha,complete");					//mcas.showStory=true;					//mcas.stringCount=0;					//mcas.stringDrawOk=false;					//mcas.beginCol=0;					//mcas.showInput=false;				}								//mcas.gameLevel+=1;			}					} else {			if(status==7 || status==10) {				status=8;			}			else if(status==8) {				status=9;			}			else if(status==9) {				status=8;			}			if(posX>40 || (firstFrameFlag && posX>0)) {				posX-=4;				beginScroll=true;				///if(mapPosX>0)				//	mapPosX-=4;			} else {				if(mapPosX>0) {					mapPosX-=4;					if(posX==72 && beginScroll) {						//offset=-4;						beginScroll=false;					}					if(mcas.bakBeginX>0) {						if(mcas.gda.mapGlobe[5]==(byte)0x00) {							mcas.bakBeginX-=1;						} else {							mcas.bakBeginX-=4;						}					} else {						mcas.bakBeginX=(short)(mcas.picsPos[mcas.gda.mapGlobe[1]][3]-1);					}					if(mcas.streetBeginX>0) {						mcas.streetBeginX-=4;					} else {						mcas.streetBeginX=(short)(mcas.picsPos[mcas.gda.mapGlobe[2]][3]-4);					}					if(posX<=40) {						lastFrameFlag=false;					}					if(mapPosX<=0) {						firstFrameFlag=true;					}				}			}		}		checkAhead();		//System.out.println("status:"+status+" mapPosX:"+mapPosX+" hoho"+(mapPosX/8)+" "+posX);	}		public void fire() {		//开火		Bullet blt=null;		int x=(posX+mapPosX)/8;		if(goAhead && x>=0 && x<mcas.gda.colNu-3) {				status=3;				blt=new Bullet(posX+10,posY-2);				blt.age=16;				blt.direction=true;				blt.owner=0;				mcas.gda.register(blt);		} 		else if(!goAhead && x>2 && x<mcas.gda.colNu-1) {				status=10;				//posX-=8;				blt=new Bullet(posX-6,posY-2);				blt.age=16;				blt.direction=false;				blt.owner=0;				mcas.gda.register(blt);			//blt.age=16;			}	}	public void checkAhead() {			//判断主角是否与其他物体相撞:敌人,炸弹,补给品等等		int x=(posX+mapPosX+4)/8;		int manNum=0;		if(goAhead) {					//朝前走			if(x>=0 && x+1<mcas.gda.colNu) {				if(mcas.gda.mapData[x+1][7]!=(byte)0xFF) {		//补给品					if(hp<=210) {						//hp+=(int)mcas.gda.mapData[x][8]*4;						hp+=90;					} else {						hp=300;					}					mcas.gda.mapData[x+1][7]=(byte)0xFF;					mcas.gda.mapData[x+1][8]=(byte)0xFF;				}								if(mcas.gda.mapData[x+1][5]!=(byte)0xFF && mcas.gda.bombStatus[x+1]!=100) {  //碰到炸弹					if(mcas.gda.mapData[x+1][5]==(byte)0x02) {			//苹果炸弹						if(mcas.gda.bombStatus[x+1]==1) {							appleBombNum+=1;							//System.out.println("get an apple bomb");							mcas.gda.mapData[x+1][5]=(byte)0xFF;							mcas.gda.mapData[x+1][6]=(byte)0xFF;						} else {							mcas.gda.bombCount=0;						}						return;					} else {						mcas.gda.bombing=true;	//炸弹爆炸						//mcas.bombState=0;						mcas.gda.bombingNu=x+1;						mcas.gda.bombStatus[x+1]=101;						//System.out.println("man touch bomb at:"+(x+1));						//try						//{						//PlaySound.stopS();						//}						//catch (IllegalStateException e)						//{						//	;						//}						//System.out.println("bombing");						if(!powerMan) {							if(mcas.gda.mapData[x+1][5]==(byte)0x00) {								hp-=70;							}							else if(mcas.gda.mapData[x+1][5]==(byte)0x01) {								hp-=250;							}							else if(mcas.gda.mapData[x+1][5]==(byte)0x03) {								hp-=150;							}							hurt=true;						}					}				}				if(x<mcas.gda.colNu && mcas.gda.mapMan[x][0]!=(byte)0xFF && mcas.gda.manBeginY-32<=(int)mcas.gda.mapMan[x][0]*4 && mcas.gda.mapMan[x][2]!=(byte)0x00)					manNum=x;				else if(x+1<mcas.gda.colNu && mcas.gda.mapMan[x+1][0]!=(byte)0xFF && mcas.gda.manBeginY-32<=(int)mcas.gda.mapMan[x+1][0]*4 && mcas.gda.mapMan[x+1][2]!=(byte)0x00)					manNum=x+1;				else if(x-1>0 && mcas.gda.mapMan[x-1][0]!=(byte)0xFF && mcas.gda.manBeginY-32<=(int)mcas.gda.mapMan[x-1][0]*4 && mcas.gda.mapMan[x-1][2]!=(byte)0x00)					manNum=x-1;				if(manNum!=0) {					mcas.gda.mapMan[manNum][2]=(byte)0x00;					if(!powerMan) {						hp-=90;						hurt=true;					}				}			}		} else {			if(x-1>=0 && x-1<mcas.gda.colNu) {				if(mcas.gda.mapData[x][7]!=(byte)0xFF) {		//补给品					if(hp<100) {						hp+=(int)mcas.gda.mapData[x-1][8];					}					mcas.gda.mapData[x][7]=(byte)0xFF;					mcas.gda.mapData[x][8]=(byte)0xFF;				}				if(mcas.gda.mapData[x-1][5]!=(byte)0xFF && mcas.gda.bombStatus[x-1]!=100) {  //碰到炸弹					if(mcas.gda.mapData[x-1][5]==(byte)0x02) {						if(mcas.gda.bombStatus[x-1]==1) {							appleBombNum+=1;							//System.out.println("get an apple bomb");							mcas.gda.mapData[x-1][5]=(byte)0xFF;							mcas.gda.mapData[x-1][6]=(byte)0xFF;						} else {							mcas.gda.bombCount=0;						}						return;					} 					else if(mcas.gda.mapData[x][5]==(byte)0x02) {						if(mcas.gda.bombStatus[x]==1) {							appleBombNum+=1;							//System.out.println("get an apple bomb");							mcas.gda.mapData[x][5]=(byte)0xFF;							mcas.gda.mapData[x][6]=(byte)0xFF;						} else {							mcas.gda.bombCount=0;						}						return;					}					else if(mcas.gda.mapData[x+1][5]==(byte)0x02) {						if(mcas.gda.bombStatus[x+1]==1) {							appleBombNum+=1;							//System.out.println("get an apple bomb");							mcas.gda.mapData[x+1][5]=(byte)0xFF;							mcas.gda.mapData[x+1][6]=(byte)0xFF;						} else {							mcas.gda.bombCount=0;						}						return;					} else {						mcas.gda.bombing=true;	//炸弹爆炸						mcas.gda.bombingNu=x-1;						mcas.gda.bombStatus[x-1]=101;						//try						//{						PlaySound.stopS();						//}						//catch (IllegalStateException e)						//{						//	;						//}						//System.out.println("bombing");						if(!powerMan) {							if(mcas.gda.mapData[x+1][5]==(byte)0x00) {								hp-=70;							}							else if(mcas.gda.mapData[x+1][5]==(byte)0x01) {								hp-=250;							}							else if(mcas.gda.mapData[x+1][5]==(byte)0x03) {								hp-=150;							}							hurt=true;						}					}				}				if(mcas.gda.mapMan[x][0]!=(byte)0xFF && mcas.gda.manBeginY-32<=(int)mcas.gda.mapMan[x][0]*4 && mcas.gda.mapMan[x][2]!=(byte)0x00)					manNum=x;				else if(x-1>0 && mcas.gda.mapMan[x-1][0]!=(byte)0xFF && mcas.gda.manBeginY-32<=(int)mcas.gda.mapMan[x-1][0]*4 && mcas.gda.mapMan[x-1][2]!=(byte)0x00)					manNum=x-1;				else if(x-2>0 && mcas.gda.mapMan[x-2][0]!=(byte)0xFF && mcas.gda.manBeginY-32<=(int)mcas.gda.mapMan[x-2][0]*4 && mcas.gda.mapMan[x-2][2]!=(byte)0x00)			//碰到敌人					manNum=x-2;				if(manNum!=0) {					mcas.gda.mapMan[manNum][2]=(byte)0x00;					if(!powerMan) {						hp-=90;						hurt=true;					}				}			}		}	}	public void disableBomb() {			//拆弹		int x;		int bombNum=0;		if(goAhead) {			x=(posX+mapPosX)/8+3;			if(x>=0 && x<mcas.gda.colNu && mcas.gda.mapData[x][5]!=(byte)0xFF) {				bombNum=x;			}			else if(x-1>=0 && x-1<mcas.gda.colNu && mcas.gda.mapData[x-1][5]!=(byte)0xFF) {				bombNum=x-1;			} 			else if(x-2>=0 && x-2<mcas.gda.colNu && mcas.gda.mapData[x-2][5]!=(byte)0xFF) {				bombNum=x-2;			}			else if(x-3>=0 && x-3<mcas.gda.colNu && mcas.gda.mapData[x-3][5]!=(byte)0xFF) {				bombNum=x-3;			}			////////////////////////////////////////			if(bombNum>0 && bombNum<mcas.gda.colNu) {				if(mcas.gda.mapData[bombNum][5]!=(byte)0xFF) {					if(mcas.gda.bombStatus[bombNum]==100) {						return;					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x02 && mcas.gda.bombStatus[bombNum]==1 && !mcas.gda.putBombOk) {		//苹果炸弹						//appleBombNum+=1;						//mcas.gda.mapData[bombNum][5]=(byte)0xFF;						//mcas.gda.mapData[bombNum][6]=(byte)0xFF;						mcas.gda.mapData[bombNum][6]=(byte)0x00;						mcas.gda.bombStatus[bombNum]=0;						mcas.gda.putBombOk=true;						mcas.gda.bombCount=9;						mcas.gda.appleBombX=(short)bombNum;					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x02 && mcas.gda.bombStatus[bombNum]==1 && mcas.gda.putBombOk) {		//苹果炸弹						;					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x02 && mcas.gda.bombStatus[bombNum]==0) {		//苹果炸弹						mcas.gda.bombCount=0;						//mcas.gda.appleBombX=(short)bombNum;					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x00 && mcas.gda.bombStatus[bombNum]==1) {		//南瓜炸弹						mcas.gda.bombStatus[bombNum]=100;						//System.out.println("disable a bomb");					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x03 && mcas.gda.bombStatus[bombNum]==1) {		//西瓜炸弹						mcas.gda.bombStatus[bombNum]=100;						//System.out.println("disable a bomb");					}					else {						mcas.gda.bombing=true;	//炸弹爆炸						//try						//{						PlaySound.stopS();						//}						//catch (IllegalStateException e)						//{						//	;						//}											mcas.gda.bombingNu=bombNum;						mcas.gda.bombStatus[bombNum]=101;						//System.out.println("bombing");						if(!powerMan) {							if(mcas.gda.mapData[bombNum][5]==(byte)0x00) {								hp-=70;							}							else if(mcas.gda.mapData[bombNum][5]==(byte)0x01) {								hp-=250;							}							else if(mcas.gda.mapData[bombNum][5]==(byte)0x03) {								hp-=150;							}							hurt=true;						}					}				}			} else {				if(appleBombNum>0) {					//if(!mcas.gda.putBombOk) {						if(x+1<mcas.gda.colNu-1 && mcas.gda.mapData[x+1][5]!=(byte)0xFF) {							mcas.gda.mapData[x-1][5]=(byte)0x02;							mcas.gda.bombStatus[x-1]=1;						} else {							mcas.gda.mapData[x][5]=(byte)0x02;							//mcas.gda.mapData[x][6]=(byte)0x00;							mcas.gda.bombStatus[x]=1;						}						appleBombNum-=1;						//mcas.gda.putBombOk=true;						//mcas.gda.bombCount=10;						//mcas.gda.appleBombX=(short)x;						//System.out.println("put apple bomb at:"+x);					//}					}			}		} else {			x=(posX+mapPosX)/8-1;			if(x>=0 && x<mcas.gda.colNu && mcas.gda.mapData[x][5]!=(byte)0xFF) {				bombNum=x;			}						if(bombNum>0 && bombNum<mcas.gda.colNu) {				if(mcas.gda.mapData[bombNum][5]!=(byte)0xFF) {					if(mcas.gda.bombStatus[bombNum]==100) {						return;					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x02 && mcas.gda.bombStatus[bombNum]==1 && !mcas.gda.putBombOk) {		//苹果炸弹						//appleBombNum+=1;						//mcas.gda.mapData[bombNum][5]=(byte)0xFF;						//mcas.gda.mapData[bombNum][6]=(byte)0xFF;						mcas.gda.mapData[bombNum][6]=(byte)0x00;						mcas.gda.bombStatus[bombNum]=0;						mcas.gda.putBombOk=true;						mcas.gda.bombCount=9;						mcas.gda.appleBombX=(short)bombNum;					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x02 && mcas.gda.bombStatus[bombNum]==1 && mcas.gda.putBombOk) {		//苹果炸弹						;					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x02 && mcas.gda.bombStatus[bombNum]==0) {		//苹果炸弹						//appleBombNum+=1;						//mcas.gda.mapData[bombNum][5]=(byte)0xFF;						//mcas.gda.mapData[bombNum][6]=(byte)0xFF;						//mcas.gda.mapData[bombNum][6]=(byte)0x00;						//mcas.gda.bombStatus[bombNum]=0;						//mcas.gda.putBombOk=true;						mcas.gda.bombCount=0;						//mcas.gda.appleBombX=(short)bombNum;					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x00 && mcas.gda.bombStatus[bombNum]==1) {		//南瓜炸弹						mcas.gda.bombStatus[bombNum]=100;						//System.out.println("disable a bomb");					}					else if(mcas.gda.mapData[bombNum][5]==(byte)0x03 && mcas.gda.bombStatus[bombNum]==1) {		//西瓜炸弹						mcas.gda.bombStatus[bombNum]=100;						//System.out.println("disable a bomb");					}					else {						mcas.gda.bombing=true;	//炸弹爆炸						//try						//{						PlaySound.stopS();						//}						//catch (IllegalStateException e)						//{						//	;						//}											mcas.gda.bombingNu=bombNum;						mcas.gda.bombStatus[bombNum]=101;						//System.out.println("bombing");						if(!powerMan) {							if(mcas.gda.mapData[bombNum][5]==(byte)0x00) {								hp-=70;							}							else if(mcas.gda.mapData[bombNum][5]==(byte)0x01) {								hp-=250;							}							else if(mcas.gda.mapData[bombNum][5]==(byte)0x03) {								hp-=150;							}							hurt=true;						}					}				}			} else {				if(appleBombNum>0) {					//if(!mcas.gda.putBombOk) {					mcas.gda.mapData[x][5]=(byte)0x02;					//mcas.gda.mapData[x][6]=(byte)0x00;					appleBombNum-=1;					mcas.gda.bombStatus[x]=1;										//}				}			}		}	}		}

⌨️ 快捷键说明

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