📄 man.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 + -