java坦克大战源代码(实现多种功能)Word格式文档下载.doc
- 文档编号:260512
- 上传时间:2023-04-28
- 格式:DOC
- 页数:55
- 大小:347.50KB
java坦克大战源代码(实现多种功能)Word格式文档下载.doc
《java坦克大战源代码(实现多种功能)Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《java坦克大战源代码(实现多种功能)Word格式文档下载.doc(55页珍藏版)》请在冰点文库上搜索。
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("
))
{
//进入战斗后可以重新开始
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("
//让子弹和坦克的速度变为0
MyTank.setSpeed(0);
EnemyTank.setSpeed(0);
Bullet.setSpeed(0);
//让坦克不能改变方向
EnemyTank.setStrar(false);
MyTank.setStrar(false);
}//战斗重新开始
//恢复子弹和坦克的速度
MyTank.setSpeed(3);
EnemyTank.setSpeed
(1);
Bullet.setSpeed(3);
EnemyTank.setStrar(true);
MyTank.setStrar(true);
}
//读取游戏
this.mp=newMyJPanel("
load"
if(this.msp!
{
}
//储存游戏
//调用保存游戏函数
GameRecord.writeRecord();
//跳出保存成功窗口
ReSuccessre=newReSuccess();
//退出
System.exit(0);
//帮助
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;
Vector<
EnemyTank>
enem=newVector<
();
//Vector<
Node>
nodes=newVector<
Bobm>
bo=newVector<
//战斗敌人坦克的数量
intenSize=4;
publicMyJPanel(Stringflag){
this.flag=flag;
this.mytank=newMyTank(100,284);
//新的游戏
if(flag.equals("
for(inti=0;
i<
this.enSize;
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
GameRecord.readerRecord();
System.out.print(GameRecord.nodes.size());
GameRecord.nodes.size();
Nodenode=GameRecord.nodes.get(i);
EnemyTankenemy=newEnemyTank(node.x,node.y);
enemy.setDirect(node.direct);
//初始化图像(可以看到第一辆坦克的爆炸效果)
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.drawString(GameRecord.getMyNum()+"
120,335);
drawTank(320,50,g,0,1);
黑体"
Font.BOLD,18));
g.drawString("
统计:
320,30);
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);
//自己的子弹
this.mytank.shot.size();
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<
this.enem.size();
EnemyTanket=enem.get(i);
if(et.isLive)
drawTank(et.getX(),et.getY(),g,et.direct,et.color);
//画出敌人的子弹
for(intj=0;
j<
et.shot.size();
j++)
Bulletbu=et.shot.get(j);
if(et.shot!
{
g.draw3DRect(bu.x,bu.y,1,1,true);
}
if(bu.isLive==false)
{
et.shot.remove(bu);
}
//爆炸效果
i<
this.bo.size();
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)
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;
g.drawLine(x+10,y+18,x+10,y+28);
g.fillOval(x+5,y+9,10,10);
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);
case3:
g.drawLine(x+18,y+10,x+28,y+10);
//判断子弹是否打中坦克
publicvoidhitTank(Bulletbullet,Tanktank,inttype)
switch(tank.direct){
if(bullet.x>
tank.x&
bullet.x<
tank.x+20&
bullet.y>
tank.y&
bullet.y<
tank.y+26)
tank.isLive=false;
bullet.isLive=false;
if(type
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 坦克 大战 源代码 实现 多种 功能
![提示](https://static.bingdoc.com/images/bang_tan.gif)