马士兵坦克大战经典源代码Word下载.docx

上传人:b****6 文档编号:21221541 上传时间:2023-01-28 格式:DOCX 页数:23 大小:18.60KB
下载 相关 举报
马士兵坦克大战经典源代码Word下载.docx_第1页
第1页 / 共23页
马士兵坦克大战经典源代码Word下载.docx_第2页
第2页 / 共23页
马士兵坦克大战经典源代码Word下载.docx_第3页
第3页 / 共23页
马士兵坦克大战经典源代码Word下载.docx_第4页
第4页 / 共23页
马士兵坦克大战经典源代码Word下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

马士兵坦克大战经典源代码Word下载.docx

《马士兵坦克大战经典源代码Word下载.docx》由会员分享,可在线阅读,更多相关《马士兵坦克大战经典源代码Word下载.docx(23页珍藏版)》请在冰豆网上搜索。

马士兵坦克大战经典源代码Word下载.docx

*以及坦克的生命值

*/

g.drawString("

missilescount:

"

+missiles.size(),10,50);

explodescount:

+explodes.size(),10,70);

tankscount:

+tanks.size(),10,90);

tankslife:

+myTank.getLife(),10,110);

if(tanks.size()<

=0){

for(inti=0;

i<

5;

i++){

tanks.add(newTank(50+40*(i+1),50,false,Tank.Direction.D,this));

}

}

for(inti=0;

missiles.size();

Missilem=missiles.get(i);

m.hitTanks(tanks);

m.hitTank(myTank);

m.hitWall(w1);

m.hitWall(w2);

m.draw(g);

//if(!

m.isLive())missiles.remove(m);

//elsem.draw(g);

explodes.size();

Explodee=explodes.get(i);

e.draw(g);

tanks.size();

Tankt=tanks.get(i);

t.collidesWithWall(w1);

t.collidesWithWall(w2);

t.collidesWithTanks(tanks);

t.draw(g);

myTank.draw(g);

myTank.eat(b);

w1.draw(g);

w2.draw(g);

b.draw(g);

}

publicvoidupdate(Graphicsg){

if(offScreenImage==null){

offScreenImage=this.createImage(GAME_WIDTH,GAME_HEIGHT);

GraphicsgOffScreen=offScreenImage.getGraphics();

Colorc=gOffScreen.getColor();

gOffScreen.setColor(Color.GREEN);

gOffScreen.fillRect(0,0,GAME_WIDTH,GAME_HEIGHT);

gOffScreen.setColor(c);

paint(gOffScreen);

g.drawImage(offScreenImage,0,0,null);

*本方法显示坦克主窗口

publicvoidlauchFrame(){

10;

tanks.add(newTank(50+40*(i+1),50,false,Tank.Direction.D,this));

//this.setLocation(400,300);

this.setSize(GAME_WIDTH,GAME_HEIGHT);

this.setTitle("

TankWar"

);

this.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

});

this.setResizable(false);

this.setBackground(Color.GREEN);

this.addKeyListener(newKeyMonitor());

setVisible(true);

newThread(newPaintThread()).start();

publicstaticvoidmain(String[]args){

TankClienttc=newTankClient();

tc.lauchFrame();

privateclassPaintThreadimplementsRunnable{

publicvoidrun(){

while(true){

repaint();

try{

Thread.sleep(50);

}catch(InterruptedExceptione){

e.printStackTrace();

}

privateclassKeyMonitorextendsKeyAdapter{

publicvoidkeyReleased(KeyEvente){

myTank.keyReleased(e);

publicvoidkeyPressed(KeyEvente){

myTank.keyPressed(e);

}

importjava.util.*;

publicclassTank{

publicstaticfinalintXSPEED=5;

publicstaticfinalintYSPEED=5;

publicstaticfinalintWIDTH=30;

publicstaticfinalintHEIGHT=30;

privatebooleanlive=true;

privateBloodBarbb=newBloodBar();

privateintlife=100;

TankClienttc;

privatebooleangood;

privateintx,y;

privateintoldX,oldY;

privatestaticRandomr=newRandom();

privatebooleanbL=false,bU=false,bR=false,bD=false;

enumDirection{L,LU,U,RU,R,RD,D,LD,STOP};

privateDirectiondir=Direction.STOP;

privateDirectionptDir=Direction.D;

privateintstep=r.nextInt(12)+3;

publicTank(intx,inty,booleangood){

this.x=x;

this.y=y;

this.oldX=x;

this.oldY=y;

this.good=good;

publicTank(intx,inty,booleangood,Directiondir,TankClienttc){

this(x,y,good);

this.dir=dir;

this.tc=tc;

publicvoiddraw(Graphicsg){

if(!

live){

if(!

good){

tc.tanks.remove(this);

return;

Colorc=g.getColor();

if(good)g.setColor(Color.RED);

elseg.setColor(Color.BLUE);

g.fillOval(x,y,WIDTH,HEIGHT);

g.setColor(c);

if(good)bb.draw(g);

switch(ptDir){

caseL:

g.drawLine(x+Tank.WIDTH/2,y+Tank.HEIGHT/2,x,y+Tank.HEIGHT/2);

break;

caseLU:

g.drawLine(x+Tank.WIDTH/2,y+Tank.HEIGHT/2,x,y);

caseU:

g.drawLine(x+Tank.WIDTH/2,y+Tank.HEIGHT/2,x+Tank.WIDTH/2,y);

caseRU:

g.drawLine(x+Tank.WIDTH/2,y+Tank.HEIGHT/2,x+Tank.WIDTH,y);

caseR:

g.drawLine(x+Tank.WIDTH/2,y+Tank.HEIGHT/2,x+Tank.WIDTH,y+Tank.HEIGHT/2);

caseRD:

g.drawLine(x+Tank.WIDTH/2,y+Tank.HEIGHT/2,x+Tank.WIDTH,y+Tank.HEIGHT);

caseD:

g.drawLine(x+Tank.WIDTH/2,y+Tank.HEIGHT/2,x+Tank.WIDTH/2,y+Tank.HEIGHT);

caseLD:

g.drawLine(x+Tank.WIDTH/2,y+Tank.HEIGHT/2,x,y+Tank.HEIGHT);

move();

voidmove(){

switch(dir){

x-=XSPEED;

y-=YSPEED;

x+=XSPEED;

y+=YSPEED;

caseSTOP:

if(this.dir!

=Direction.STOP){

this.ptDir=this.dir;

if(x<

0)x=0;

if(y<

30)y=30;

if(x+Tank.WIDTH>

TankClient.GAME_WIDTH)x=TankClient.GAME_WIDTH-Tank.WIDTH;

if(y+Tank.HEIGHT>

TankClient.GAME_HEIGHT)y=TankClient.GAME_HEIGHT-Tank.HEIGHT;

Direction[]dirs=Direction.values();

if(step==0){

step=r.nextInt(12)+3;

intrn=r.nextInt(dirs.length);

dir=dirs[rn];

}

step--;

if(r.nextInt(40)>

38)this.fire();

}

privatevoidstay(){

x=oldX;

y=oldY;

publicvoidkeyPressed(KeyEvente){

intkey=e.getKeyCode();

switch(key){

caseKeyEvent.VK_F2:

this.live){

this.live=true;

this.life=100;

caseKeyEvent.VK_LEFT:

bL=true;

caseKeyEvent.VK_UP:

bU=true;

caseKeyEvent.VK_RIGHT:

bR=true;

caseKeyEvent.VK_DOWN:

bD=true;

locateDirection();

voidlocateDirection(){

if(bL&

&

!

bU&

bR&

bD)dir=Direction.L;

elseif(bL&

bU&

bD)dir=Direction.LU;

elseif(!

bL&

bD)dir=Direction.U;

bR&

bD)dir=Direction.RU;

bD)dir=Direction.R;

bD)dir=Direction.RD;

bD)dir=Direction.D;

bD)dir=Direction.LD;

bD)dir=Direction.STOP;

publicvoidkeyReleased(KeyEvente){

caseKeyEvent.VK_CONTROL:

fire();

bL=false;

bU=false;

bR=false;

bD=false;

caseKeyEvent.VK_A:

superFire();

publicMissilefire(){

live)returnnull;

intx=this.x+Tank.WIDTH/2-Missile.WIDTH/2;

inty=this.y+Tank.HEIGHT/2-Missile.HEIGHT/2;

Missilem=newMissile(x,y,good,ptDir,this.tc);

tc.missiles.add(m);

returnm;

publicMissilefire(Directiondir){

Missilem=newMissile(x,y,good,dir,this.tc);

publicRectanglegetRect(){

returnnewRectangle(x,y,WIDTH,HEIGHT);

publicbooleanisLive(){

returnlive;

publicvoidsetLive(booleanlive){

this.live=live;

publicbooleanisGood(){

returngood;

*撞墙

*@paramw被撞的墙

*@return撞上了返回true,否则false

publicbooleancollidesWithWall(Wallw){

if(this.live&

this.getRect().intersects(w.getRect())){

this.stay();

returntrue;

returnfalse;

publicbooleancollidesWithTanks(java.util.List<

tanks){

if(this!

=t){

if(this.live&

t.isLive()&

this.getRect().intersects(t.getRect())){

this.stay();

t.stay();

returntrue;

privatevoidsuperFire(){

Direction[]dirs=Direction.values();

8;

fire(dirs[i]);

publicintgetLife(){

returnlife;

publicvoidsetLife(intlife){

this.life=life;

privateclassBloodBar{

publicvoiddraw(Graphicsg){

Colorc=g.getColor();

g.setColor(Color.RED);

g.drawRect(x,y-10,WIDTH,10);

intw=WIDTH*life/100;

g.fillRect(x,y-10,w,10);

g.setColor(c);

publicbooleaneat(Bloodb){

b.isLive()&

this.getRect().intersects(b.getRect())){

this.life=100;

b.setLive(false);

retu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1