按关键词阅读: java 基于 论文 大战 坦克 游戏
ss.add(s);
break;
/启动子弹线程 Thread t=new Thread(s);
t.start();
附录二 坦克大战程序 import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import ja 。
45、va.awt.event.KeyListener;
import java.io.File;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class Tankgame extends JFrame implements ActionListener MyPanel mp=null;
StartPane 。
46、l sp=null;
/做出需要的菜单 JMenuBar jmb=null;
JMenu jm1=null;
JMenuItem jmi1=null;
JMenuItem jmi2=null;
JMenuItem jmi3=null;
JMenuItem jmi4=null;
public static void main(String args) / TODO Auto-generated method stub Tankgame tankgame=new Tankgame();
/构造函数 public Tankgame() /mp=new MyPanel();
/this.add(mp) 。
47、;
/this.addKeyListener(mp);
/启动 mp 线程 /Thread t=new Thread(mp);
/t.start();
jmb=new JMenuBar();
jm1=new JMenu(游戏(F);
jm1.setMnemonic(F);
jmi1=new JMenuItem(开始新游戏(N);
jmi1.setMnemonic(N);
jmi2=new JMenuItem(退出游戏);
jmi3=new JMenuItem(存盘退出);
jmi4=new JMenuItem(继续游戏);
/对 jmi1 注册监听 jmi1.addActionListener 。
48、(this);
/对 jmi2 注册监听 jmi2.addActionListener(this);
jmi3.addActionListener(this);
jmi4.addActionListener(this);
/添加 this.setJMenuBar(jmb);
jmb.add(jm1);
jm1.add(jmi1);
jm1.add(jmi2);
jm1.add(jmi3);
jm1.add(jmi4);
sp=new StartPanel();
this.add(sp);
Thread t=new Thread(sp);
t.start();
this.setSize(1050 。
49、,750);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
Override public void actionPerformed(ActionEvent e) / TODO Auto-generated method stub if(e.getSource()=jmi1) /创建战场面板 /先删除原来的开始面板 this.remove(sp);
if(mp!=null) this.remove(mp);
mp=new MyPanel(newGame);
this.add(mp);
th 。
50、is.addKeyListener(mp);
/启动 mp 线程 Thread t=new Thread(mp);
t.start();
/刷新面板 this.setVisible(true);
else if(e.getSource()=jmi2) /玩家退出游戏 /保存玩家总成绩 Recorder.keepRecording();
System.exit(0);
else if(e.getSource()=jmi3) Recorder.setEts(mp.ets);
Recorder.keepRecAndEnemTank();
System.exit(0);
else if(e.getSo 。
51、urce()=jmi4) /创建战场面板 /先删除原来的开始面板 this.remove(sp);
if(mp!=null) this.remove(mp);
mp=new MyPanel(conGame);
this.add(mp);
this.addKeyListener(mp);
/启动 mp 线程 Thread t=new Thread(mp);
t.start();
/刷新面板 this.setVisible(true);
/开始界面界面(字体闪烁效果(使用线程)) class StartPanel extends JPanel implements Runnable int tim 。
52、e=0;
public void paint(Graphics g) super.paint(g);
g.fillRect(0, 0, 900, 600);
if(time%2=0) g.setColor(Color.yellow);
g.setFont(new Font(宋体,Font.BOLD,30);
g.drawString(stage:1, 400, 250);
Override public void run() / TODO Auto-generated method stub while(true) try Thread.sleep(100);
catch (Interrupt 。
53、edException e) / TODO Auto-generated catch block e.printStackTrace();
time+;
/重画 this.repaint();
/我的面板 class MyPanel extends JPanel implements KeyListener,Runnable /定义一个我的坦克 Hero hero=null;
/定义敌人的坦克 Vector ets=new Vector();
int etSize=5;
/定义三张图片 , 三张图片才能组成一颗炸弹 Image image1=null;
Image image2=null;
Ima 。
54、ge image3=null;
/定义炸弹的集合 Vector bombs=new Vector();
Vector nodes=new Vector();
/构造函数 public MyPanel(String flag) /恢复记录 /创建文件 File f=new File(d:TankGame.txt);
if(f.exists() Recorder.getRecoring();
hero=new Hero(400,540);
/初始化敌人的坦克 if(flag.equals(newGame) for(int i=0;
ietSize;
i+) /创建一辆敌人的坦克对象 EnemyTank 。
55、 et=new EnemyTank(i*160),0);
et.setDirect(2);
/将 MyPanel 的敌人坦克向量交给该敌人坦克 et.setEts(ets);
/启动敌人的坦克 Thread t=new Thread(et);
t.start();
/加入 ets.add(et);
/*888888888888888888888888888888888888888888888888888888888888888888888888888 */ /给敌人坦克添加一颗子弹 Shot s=new Shot(et.x+18,et.y+60,2);
/加入给敌人坦克 et.ss.add(s 。
56、);
/启动敌人坦克子弹线程 Thread t2=new Thread(s);
t2.start();
else nodes=Recorder.getNidesAndEnNums();
稿源:(未知)
【傻大方】网址:/a/2021/0621/0022536797.html
标题:基于|基于java的游戏坦克大战论文( 六 )