java坦克大战源代码(实现多种功能).doc

上传人:聆听****声音 文档编号:86459 上传时间:2023-04-28 格式:DOC 页数:55 大小:347.50KB
下载 相关 举报
java坦克大战源代码(实现多种功能).doc_第1页
第1页 / 共55页
java坦克大战源代码(实现多种功能).doc_第2页
第2页 / 共55页
java坦克大战源代码(实现多种功能).doc_第3页
第3页 / 共55页
java坦克大战源代码(实现多种功能).doc_第4页
第4页 / 共55页
java坦克大战源代码(实现多种功能).doc_第5页
第5页 / 共55页
java坦克大战源代码(实现多种功能).doc_第6页
第6页 / 共55页
java坦克大战源代码(实现多种功能).doc_第7页
第7页 / 共55页
java坦克大战源代码(实现多种功能).doc_第8页
第8页 / 共55页
java坦克大战源代码(实现多种功能).doc_第9页
第9页 / 共55页
java坦克大战源代码(实现多种功能).doc_第10页
第10页 / 共55页
java坦克大战源代码(实现多种功能).doc_第11页
第11页 / 共55页
java坦克大战源代码(实现多种功能).doc_第12页
第12页 / 共55页
java坦克大战源代码(实现多种功能).doc_第13页
第13页 / 共55页
java坦克大战源代码(实现多种功能).doc_第14页
第14页 / 共55页
java坦克大战源代码(实现多种功能).doc_第15页
第15页 / 共55页
java坦克大战源代码(实现多种功能).doc_第16页
第16页 / 共55页
java坦克大战源代码(实现多种功能).doc_第17页
第17页 / 共55页
java坦克大战源代码(实现多种功能).doc_第18页
第18页 / 共55页
java坦克大战源代码(实现多种功能).doc_第19页
第19页 / 共55页
java坦克大战源代码(实现多种功能).doc_第20页
第20页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java坦克大战源代码(实现多种功能).doc

《java坦克大战源代码(实现多种功能).doc》由会员分享,可在线阅读,更多相关《java坦克大战源代码(实现多种功能).doc(55页珍藏版)》请在冰点文库上搜索。

java坦克大战源代码(实现多种功能).doc

//此文件有三个.java文件组成

//以包名为标志,复制时请注意

packagecom.tank4_3;

importjavax.imageio.ImageIO;

importjava.io.*;

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

publicclassMyTankGameextendsJFrameimplementsActionListener

{

MyJPanelmp=null;

MyStartPanelmsp=null;

JMenuBarjmb=null;

JMenujm1=null;

JMenujm2=null;

JMenuItemjmi1=null;

JMenuItemjmi2=null;

JMenuItemjmi3=null;

JMenuItemjmi4=null;

JMenuItemjmi5=null;

JMenuItemjmi6=null;

JMenuItemjmi21=null;

publicstaticvoidmain(String[]args){

MyTankGameytg=newMyTankGame();

}

publicMyTankGame()

{

msp=newMyStartPanel();

Threadt=newThread(msp);

t.start();

jmb=newJMenuBar();

jm1=newJMenu("游戏(G)");

jm1.setMnemonic('g');

jmi1=newJMenuItem("新游戏(N)");

jmi1.setMnemonic('n');

jmi1.addActionListener(this);

jmi1.setActionCommand("newgame");

jmi2=newJMenuItem("暂停(S)");

jmi2.setMnemonic('s');

jmi2.addActionListener(this);

jmi2.setActionCommand("suspend");

jmi3=newJMenuItem("继续(C)");

jmi3.setMnemonic('c');

jmi3.addActionListener(this);

jmi3.setActionCommand("continue");

jmi6=newJMenuItem("读取游戏(X)");

jmi6.setMnemonic('x');

jmi6.addActionListener(this);

jmi6.setActionCommand("loadGame");

jmi4=newJMenuItem("储存游戏(Q)");

jmi4.setMnemonic('q');

jmi4.addActionListener(this);

jmi4.setActionCommand("save");

jmi5=newJMenuItem("退出(E)");

jmi5.setMnemonic('e');

jmi5.addActionListener(this);

jmi5.setActionCommand("exit");

jm2=newJMenu("帮助(H)");

jm2.setMnemonic('h');

jmi21=newJMenuItem("操作说明(U)");

jmi21.setMnemonic('u');

jmi21.addActionListener(this);

jmi21.setActionCommand("help");

jmb.add(jm1);

jmb.add(jm2);

jm1.add(jmi1);

jm1.add(jmi2);

jm1.add(jmi3);

jm1.add(jmi6);

jm1.add(jmi4);

jm1.add(jmi5);

jm2.add(jmi21);

this.setJMenuBar(jmb);

this.add(msp);

setSize(430,430);

setResizable(false);

setTitle("坦克大战4.3");

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

publicvoidactionPerformed(ActionEventarg0){

//TODOAuto-generatedmethodstub

//按开始后显示战斗场面

if(arg0.getActionCommand().equals("newgame"))

{

//进入战斗后可以重新开始

if(this.mp!

=null)

{

this.remove(mp);

}

this.mp=newMyJPanel("new");

add(this.mp);

Threadt=newThread(this.mp);

t.start();

addKeyListener(this.mp);

GameRecord.setEnNum(20);

GameRecord.setMyNum(3);

GameRecord.setHitNum(0);

//要显示战斗场面,先要移除开始画面

this.remove(msp);

//刷新

this.setVisible(true);

}//战斗暂停

elseif(arg0.getActionCommand().equals("suspend"))

{

//让子弹和坦克的速度变为0

MyTank.setSpeed(0);

EnemyTank.setSpeed(0);

Bullet.setSpeed(0);

//让坦克不能改变方向

EnemyTank.setStrar(false);

MyTank.setStrar(false);

}//战斗重新开始

elseif(arg0.getActionCommand().equals("continue"))

{

//恢复子弹和坦克的速度

MyTank.setSpeed(3);

EnemyTank.setSpeed

(1);

Bullet.setSpeed(3);

EnemyTank.setStrar(true);

MyTank.setStrar(true);

}

//读取游戏

elseif(arg0.getActionCommand().equals("loadGame"))

{

if(this.mp!

=null)

{

this.remove(mp);

}

this.mp=newMyJPanel("load");

add(this.mp);

Threadt=newThread(this.mp);

t.start();

addKeyListener(this.mp);

//要显示战斗场面,先要移除开始画面

if(this.msp!

=null)

{

this.remove(msp);

}

//刷新

this.setVisible(true);

}

//储存游戏

elseif(arg0.getActionCommand().equals("save"))

{

//调用保存游戏函数

GameRecord.writeRecord();

//跳出保存成功窗口

ReSuccessre=newReSuccess();

}

//退出

elseif(arg0.getActionCommand().equals("exit"))

{

System.exit(0);

}

//帮助

elseif(arg0.getActionCommand().equals("help"))

{

Helph=newHelp();

}

}

}

//画出开始提示面板

classMyStartPanelextendsJPanelimplementsRunnable

{

inttime=0;

publicvoidpaint(Graphicsg)

{

super.paint(g);

g.fillRect(0,0,300,310);

if(time%2==0)

{

g.setColor(Color.yellow);

g.setFont(newFont("宋体",Font.BOLD,22));

g.drawString("Stage:

1",100,140);

}

}

//让字体闪动

publicvoidrun(){

while(true)

{

try{

Thread.sleep(500);

}catch(InterruptedExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

time++;

if(time==13)

{

break;

}

this.repaint();

}

}

}

classMyJPanelextendsJPanelimplementsKeyListener,Runnable

{

MyTankmytank=null;

Imageimage1=null;

Imageimage2=null;

Imageimage3=null;

Stringflag;

Vectorenem=newVector();

//Vectornodes=newVector();

Vectorbo=newVector();

//战斗敌人坦克的数量

intenSize=4;

publicMyJPanel(Stringflag){

this.flag=flag;

this.mytank=newMyTank(100,284);

//新的游戏

if(flag.equals("new"))

{

for(inti=0;i

{

EnemyTankenemy=newEnemyTank(i*90,0);

//传到EnemyTank

enemy.setDirect

(1);

enemy.setEnems(enem);

//传到GameRecord

GameRecord.setEnems(enem);

Threadth=newThread(enemy);

th.start();

this.enem.add(enemy);

}

//读取游戏

}else

if(flag.equals("load"))

{

GameRecord.readerRecord();

System.out.print(GameRecord.nodes.size());

for(inti=0;i

{

Nodenode=GameRecord.nodes.get(i);

EnemyTankenemy=newEnemyTank(node.x,node.y);

enemy.setDirect(node.direct);

//传到EnemyTank

enemy.setEnems(enem);

//传到GameRecord

GameRecord.setEnems(enem);

Threadth=newThread(enemy);

th.start();

this.enem.add(enemy);

}

}

//初始化图像(可以看到第一辆坦克的爆炸效果)

try{

this.image1=ImageIO.read(newFile("tank1.gif"));

this.image2=ImageIO.read(newFile("tank2.gif"));

this.image3=ImageIO.read(newFile("tank3.gif"));

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

//this.image1=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/tank1.gif"));

//this.image2=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/tank2.gif"));

//this.image3=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/tank3.gif"));

}

//记录信息的显示(坦克剩余的数量,击中坦克数量)

publicvoidrecordpaint(Graphicsg)

{

drawTank(30,320,g,0,1);

g.setColor(Color.black);

g.setFont(newFont("宋体",Font.BOLD,12));

g.drawString(GameRecord.getEnNum()+"",60,335);

drawTank(90,320,g,0,0);

g.setColor(Color.black);

g.setFont(newFont("宋体",Font.BOLD,12));

g.drawString(GameRecord.getMyNum()+"",120,335);

drawTank(320,50,g,0,1);

g.setColor(Color.black);

g.setFont(newFont("黑体",Font.BOLD,18));

g.drawString("统计:

",320,30);

g.setFont(newFont("宋体",Font.BOLD,12));

g.drawString("X"+GameRecord.getHitNum()+"="+GameRecord.getHitNum()*500,350,65);

}

publicvoidpaint(Graphicsg){

super.paint(g);

g.fillRect(0,0,300,310);

//战斗中记录信息的显示

this.recordpaint(g);

//自己的坦克

if(mytank.isLive)

{

drawTank(this.mytank.getX(),this.mytank.getY(),g,this.mytank.direct,this.mytank.color);

}

//自己的子弹

for(inti=0;i

{

Bulletmyshot=this.mytank.shot.get(i);

if((myshot!

=null)&&(myshot.isLive))

{

g.draw3DRect(myshot.x,myshot.y,1,1,true);

}

if(myshot.isLive==false)

{

this.mytank.shot.remove(myshot);

}

}

//敌人的坦克

for(inti=0;i

{

EnemyTanket=enem.get(i);

if(et.isLive)

{

drawTank(et.getX(),et.getY(),g,et.direct,et.color);

//画出敌人的子弹

for(intj=0;j

{

Bulletbu=et.shot.get(j);

if(et.shot!

=null)

{

g.draw3DRect(bu.x,bu.y,1,1,true);

}

if(bu.isLive==false)

{

et.shot.remove(bu);

}

}

}

}

//爆炸效果

for(inti=0;i

{

Bobmbobm=this.bo.get(i);

bobm.burst();

if(bobm.live>6)

{

g.drawImage(this.image1,bobm.x,bobm.y,26,26,this);

}elseif(bobm.live>3)

{

g.drawImage(this.image2,bobm.x,bobm.y,26,26,this);

}

else{

g.drawImage(this.image3,bobm.x,bobm.y,26,26,this);

}

if(bobm.isLive==false)

{

this.bo.remove(bobm);

}

}

}

//画出坦克

publicvoiddrawTank(intx,inty,Graphicsg,intdirect,intcolor)

{

switch(color){

case0:

g.setColor(Color.yellow);break;

case1:

g.setColor(Color.white);

}

switch(direct)

{

case0:

g.fill3DRect(x,y,5,26,false);

g.fill3DRect(x+15,y,5,26,false);

g.fill3DRect(x+5,y+5,10,16,false);

g.fillOval(x+5,y+8,10,10);

g.drawLine(x+10,y+8,x+10,y-2);

break;

case1:

g.fill3DRect(x,y,5,26,false);

g.fill3DRect(x+15,y,5,26,false);

g.fill3DRect(x+5,y+5,10,16,false);

g.drawLine(x+10,y+18,x+10,y+28);

g.fillOval(x+5,y+9,10,10);

break;

case2:

g.fill3DRect(x,y,26,5,false);

g.fill3DRect(x,y+15,26,5,false);

g.fill3DRect(x+5,y+5,16,10,false);

g.fillOval(x+8,y+5,10,10);

g.drawLine(x+8,y+10,x-2,y+10);

break;

case3:

g.fill3DRect(x,y,26,5,false);

g.fill3DRect(x,y+15,26,5,false);

g.fill3DRect(x+5,y+5,16,10,false);

g.fillOval(x+8,y+5,10,10);

g.drawLine(x+18,y+10,x+28,y+10);

break;

}

}

//判断子弹是否打中坦克

publicvoidhitTank(Bulletbullet,Tanktank,inttype)

{

switch(tank.direct){

case0:

case1:

if(bullet.x>tank.x&&bullet.x

bullet.y>tank.y&&bullet.y

{

tank.isLive=false;

bullet.isLive=false;

if(type

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2