ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:51.23KB ,
资源ID:12031542      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12031542.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java 坦克大战游戏教程完整代码.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java 坦克大战游戏教程完整代码.docx

1、java 坦克大战游戏教程完整代码项目:用java做的坦克大战效果图:进入坦克大战游戏主界面点击开始菜单,即可进入游戏:使用W/A/S/D控制坦克移动,使用J发射子弹消灭所有坦克游戏获得胜利,被击中后,游戏将会结束:完整代码见下文,需要准备一个进入坦克大战的音乐声音,放在TankVs.java代码文件的同路径的shengyin文件夹下。(没有也可以)代码运行方法:1,在以及配置好java JDK的情况下,将下面的完整的代码复制到并粘贴到记事本内,并将后缀.txt改为.java,文件命名为TankVs.java。2,运行cmd,使用javac TankVs.java命令编译该java文件,编译成

2、功后,使用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

3、; 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);

4、jmi.addActionListener(this); /添加单击事件监听 this.setSize(1000,800); this.setLocation(200,100); this.setTitle(坦克大战); /文件的路径自己改一下 this.setIconImage(new ImageIcon(D:JAVA高级坦克大战imagetank.jpg).getImage(); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); this.setVisible(true); Thre

5、ad 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(tr

6、ue); Thread t1=new Thread(this); t1.start(); shengyin sy=new shengyin(.shengyintank.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

7、.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,80

8、0,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(); class OverPanel extends JPanel public void paint(Graphics g) super.p

9、aint(g); g.fillRect(0,0,800,600); g.setColor(Color.yellow); g.setFont(new Font(Cambria,Font.BOLD,80); g.drawString(GAME OVER,200,300); class WinPanel extends JPanel public void paint(Graphics g) super.paint(g); g.fillRect(0,0,800,600); g.setColor(Color.yellow); g.setFont(new Font(Cambria,Font.BOLD,8

10、0); g.drawString(YOU WIN,200,300); class MyPanel extends JPanel implements KeyListener,Runnable WoTank mt=null; Vector dtk=new Vector(); /集合类+泛型,Vector适用与多线程, int tks=12; public MyPanel() mt=new WoTank(260,500); mt.setSudu(8); for(int i=0;itks;i+) DiTank dt=new DiTank(750/(tks-1)*i,20); dt.setSudu(2

11、); dtk.add(dt); Thread t=new Thread(dt); /启动敌人坦克线程 t.start(); public void paint(Graphics g) super.paint(g); g.fillRect(0,0,800,600); if(mt.shengming=true) this.drawTank(mt.getX(),mt.getY(),g,mt.getFangxiang(),0); /绘制我方坦克 for(int i=0;idtk.size();i+) DiTank dt=dtk.get(i); this.drawTank(dt.getX(),dt.ge

12、tY(),g,dt.getFangxiang(),1); if(dt.zd.shengming=true) g.setColor(Color.white); g.fill3DRect(dt.zd.x,dt.zd.y,3,3,false); /绘制敌方坦克 for(int i=0;imt.aa.size();i+) /绘制子弹 Zidan zd=mt.aa.get(i); if(zd.shengming=true & mt.shengming=true) g.setColor(Color.red); g.fill3DRect(zd.x,zd.y,3,3,false); if(zd.shengmi

13、ng=false) mt.aa.remove(zd); public void drawTank(int x,int y,Graphics g,int fangxiang,int leixing) switch(leixing) case 0: /我的坦克 g.setColor(Color.yellow); break; case 1: /敌人的坦克 g.setColor(Color.green); break; switch(fangxiang) case 0: /上方向 g.fill3DRect(x,y,5,30,false); g.fill3DRect(x+15,y,5,30,false

14、); g.fill3DRect(x+5,y+5,10,20,false); g.fillOval(x+5,y+10,10,10); g.drawLine(x+10,y+15,x+10,y-3); break; case 1: /左方向 g.fill3DRect(x,y,30,5,false); g.fill3DRect(x,y+15,30,5,false); g.fill3DRect(x+5,y+5,20,10,false); g.fillOval(x+10,y+5,10,10); g.drawLine(x+15,y+10,x-3,y+10); break; case 2: /下方向 g.fi

15、ll3DRect(x,y,5,30,false); g.fill3DRect(x+15,y,5,30,false); g.fill3DRect(x+5,y+5,10,20,false); g.fillOval(x+5,y+10,10,10); g.drawLine(x+10,y+15,x+10,y+33); break; case 3: /右方向 g.fill3DRect(x,y,30,5,false); g.fill3DRect(x,y+15,30,5,false); g.fill3DRect(x+5,y+5,20,10,false); g.fillOval(x+10,y+5,10,10);

16、 g.drawLine(x+15,y+10,x+33,y+10); break; public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) public void keyPressed(KeyEvent e) if(mt.shengming=true) if(e.getKeyCode()=KeyEvent.VK_W) this.mt.setFangxiang(0); this.mt.xiangshang(); else if(e.getKeyCode()=KeyEvent.VK_A) this.mt.setFang

17、xiang(1); this.mt.xiangzuo(); else if(e.getKeyCode()=KeyEvent.VK_S) this.mt.setFangxiang(2); this.mt.xiangxia(); else if(e.getKeyCode()=KeyEvent.VK_D) this.mt.setFangxiang(3); this.mt.xiangyou(); if(e.getKeyCode()=KeyEvent.VK_J) if(mt.aa.size()0) try Thread.sleep(50); catch(Exception e) for(int i=0;

18、imt.aa.size();i+) Zidan zd=mt.aa.get(i); for(int j=0;jdtk.size();j+) DiTank dt=dtk.get(j); this.jzdf(zd,dt); for(int i=0;idt.getX() & zd.xdt.getY() & zd.ydt.getX() & zd.xdt.getY() & zd.ymt.getX() & zd.xmt.getY() & zd.ymt.getX() & zd.xmt.getY() & zd.ymt.getY()+20) zd.shengming=false; mt.shengming=fal

19、se; break; class Tank private int x=0,y=0; int fangxiang=0; int sudu=1; boolean shengming=true; public int getSudu() return sudu; public void setSudu(int sudu) this.sudu=sudu; public int getFangxiang() return fangxiang; public void setFangxiang(int fangxiang) this.fangxiang=fangxiang; public int get

20、X() return x; public int getY() return y; public void setX(int x) this.x=x; public void setY(int y) this.y=y; public Tank(int x,int y) this.x=x; this.y=y; class WoTank extends Tank Zidan zd=new Zidan(); Vector aa=new Vector(); public WoTank(int x,int y) super(x,y); public void xiangshang() if(getY()

21、-sudu0) this.setY(this.getY()-sudu); public void xiangzuo() if(getX()-sudu0) this.setX(this.getX()-sudu); public void xiangxia() if(getY()+sudu520) this.setY(this.getY()+sudu); public void xiangyou() if(getX()+sudu750) this.setX(this.getX()+sudu); public void fszd() switch(this.fangxiang) case 0: zd

22、=new Zidan(super.getX()+10,super.getY(),super.getFangxiang(),true); break; case 1: zd=new Zidan(super.getX(),super.getY()+10,super.getFangxiang(),true); break; case 2: zd=new Zidan(super.getX()+10,super.getY()+30,super.getFangxiang(),true); break; case 3: zd=new Zidan(super.getX()+30,super.getY()+10

23、,super.getFangxiang(),true); break; aa.add(zd); Thread t=new Thread(zd); /启动子弹线程 t.start(); class Zidan implements Runnable int x; int y; int fangxiang; int sudu=8; public boolean shengming=false; public Zidan() public Zidan(int x,int y,int fangxiang,boolean shengming) this.x=x; this.y=y; this.fangxiang=fangxiang; this.shengming=shengming; public void run() while(true)

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

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