java 坦克大战游戏教程完整代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
项目:用java做的坦克大战
效果图:
进入《坦克大战》游戏主界面
点击开始菜单,即可进入游戏:
使用W/A/S/D控制坦克移动,使用J发射子弹
消灭所有坦克游戏获得胜利,被击中后,游戏将会结束:
完整代码见下文,需要准备一个进入坦克大战的音乐声音,放在TankVs.java代码文件的同路径的shengyin文件夹下。(没有也可以)
代码运行方法:
1,在以及配置好java JDK的情况下,将下面的完整的代码复制到并粘贴到记事本内,并将后缀.txt改为.java,文件命名为TankVs.java。
2,运行cmd,使用javac TankVs.java命令编译该java文件,编译成功后,使用java TankVs 命令即可运行游戏。
//以下为完整的坦克游戏代码
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.sound.sampled.*;//导入声音类包
public class TankVs extends JFrame implements ActionListener,Runnable
{
OverPanel op=null;
WinPanel wp=null;
FirstPanel fmp=null;
MyPanel mp=null;
JMenuBar jmb=null;
JMenu jm=null;
JMenuItem jmi=null;
public static void main(String[] args)
{
TankVs tk1=new TankVs();
}
public TankVs()
{
fmp=new FirstPanel();
jmb=new JMenuBar();
jm=new JMenu("开始");
jmi=new JMenuItem("开始游戏");
jm.add(jmi);
jmb.add(jm);
this.setJMenuBar(jmb);
this.add(fmp);
jmi.addActionListener(this);//添加单击事件监听
this.setSize(1000,800);
this.setLocation(200,100);
this.setTitle("坦克大战");
//文件的路径自己改一下
this.setIconImage(new ImageIcon("D:\\JAVA\\高级\\坦克大战\\image\\tank.jpg").getImage());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setVisible(true);
Thread t=new Thread(fmp);
t.start();
}
public void actionPerformed(ActionEvent e)
{
if(fmp!=null){this.remove(fmp);}
if(op!=null){this.remove(op);}
if(wp!=null){this.remove(wp);}
mp=new MyPanel();
mp.repaint();
this.addKeyListener(mp);//添加键盘事件监听this.add(mp);
Thread t=new Thread(mp);
t.start();
this.setVisible(true);
Thread t1=new Thread(this);
t1.start();
shengyin sy=new shengyin(".\\shengyin\\tank.wav");
sy.start();
}
public void run()
{
while(true)
{
try
{
Thread.sleep(50);
}
catch(Exception e){}
if(this.mp.dtk.size()==0)
{
try
{
Thread.sleep(1000);
}
catch(Exception e){}
this.wp=new WinPanel();
this.add(wp);
this.remove(mp);
this.setVisible(true);
}
if(this.mp.mt.shengming==false)
{
try
{
Thread.sleep(1000);
}
catch(Exception e){}
this.op=new OverPanel();
this.add(op);
this.remove(mp);
this.setVisible(true);
}
}
}
}
class FirstPanel extends JPanel implements Runnable
{
int times=0;
public void paint(Graphics g)
{
super.paint(g);
g.fillRect(0,0,800,600);
if(times%2==0)
{
g.setColor(Color.yellow);
Font myFont=new Font("华文行楷",Font.BOLD,80);
g.setFont(myFont);
g.drawString("坦克大战",230,300);
}
}
public void run()
{
while(true)
{
try
{
Thread.sleep(500);
}
catch(Exception e){}
times++;
this.repaint();
}
}