java项目之——坦克大战26
来源:互联网 发布:手机淘宝主图什么格式 编辑:程序博客网 时间:2024/06/05 07:54
本版本做最后的修正:敌人死光重新加入,主战坦克死掉F2重新开始。
1.主类中: 画方法里面判断,如果无敌方坦克,就添加。
if(tanks.size()<=0){for(int i=0;i<10;i++){tanks.add(new Tank(50+40*(i+1),50,false,Tank.Direction.D,this));}}
2.坦克类中:按键监听里面,如果战亡,重新复活。
case KeyEvent.VK_F2: if(!this.live){this.live = true;this.life= 100;}
本版本为最后一个版本,一个小坦克项目写了这么久也是不容易啊,希望以后多看,麻雀虽小五脏俱全,里面涉及到的java基础知识很多,面向对象,集合,泛型,内部类, 线程,监听,变量,数据,对象,构造方法,this等等的用法。还有做项目的思维,一步一步不能太急,再难的问题,分解下来就会很简单。
下一阶段:复习java知识,投递简历。
附tankClient的代码:
public class TankClient extends Frame {public static final int GAME_WIDTH =800;public static final int GAME_HEIGHT =600;Tank myTank = new Tank(50, 50,true,Tank.Direction.STOP,this); //Tank enemyTank = new Tank(100,100,false,this); Wall w1 = new Wall(100, 200, 20, 150, this), w2 = new Wall(300, 100, 300, 20, this);Image offScreenImage = null;List<Missile> missiles = new ArrayList<Missile>(); //泛型 删加 效率相对高List<Explode> explodes = new ArrayList<Explode>(); List<Tank> tanks = new ArrayList<Tank>();Blood b = new Blood(); public void paint(Graphics g) {g.drawString("missiles count:"+missiles.size(), 10,50);//g.drawString("explodes count:"+explodes.size(), 10,70);if(tanks.size()<=0){for(int i=0;i<10;i++){tanks.add(new Tank(50+40*(i+1),50,false,Tank.Direction.D,this));}} for (int i = 0; i < missiles.size(); i++) {Missile m = missiles.get(i);m.hitWall(w1);m.hitWall(w2);m.draw(g);m.hitTanks(tanks);m.hitTank(myTank);} for (int i = 0; i < explodes.size(); i++) {Explode e = explodes.get(i);e.draw(g);} for(int i=0; i<10; i++){ Tank t = tanks.get(i); t.collidesWithWall(w1); t.collidesWithWall(w2); t.collidesWithTanks(tanks); t.draw(g); } b.draw(g); w1.draw(g); w2.draw(g);myTank.draw(g);myTank.eat(b);}public void update(Graphics g) {if(offScreenImage == null){offScreenImage = this.createImage(GAME_WIDTH,GAME_HEIGHT);}Graphics gOffScreen = offScreenImage.getGraphics();Color c = gOffScreen.getColor();gOffScreen.setColor(Color.GRAY);gOffScreen.fillRect(0, 0, 800, 600);gOffScreen.setColor(c);print(gOffScreen);g.drawImage(offScreenImage, 0, 0, null);}public void lauchFrame(){for(int i=0;i<10;i++){tanks.add(new Tank(50+40*(i+1),50,false,Tank.Direction.D,this));}this.setSize(GAME_WIDTH,GAME_HEIGHT);this.setTitle("TankWar");this.setLocation(80, 60);this.setVisible(true);this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e) { System.exit(0);}});this.setResizable(false);new Thread(new paintThread()).start();this.addKeyListener(new KeyMonitor());}public static void main(String[] args) {TankClient tc = new TankClient();tc.lauchFrame();}private class paintThread implements Runnable { //线程 内部类 为此线程服务public void run() {while(true){repaint();try {Thread.sleep(50);} catch (Exception e) {e.printStackTrace();}}}}private class KeyMonitor extends KeyAdapter{public void keyReleased(KeyEvent e) {myTank.keyReleased(e);}public void keyPressed(KeyEvent e) {myTank.keyPressed(e);}}}
0 0
- java项目之——坦克大战26
- java项目之——坦克大战01
- java项目之——坦克大战02
- java项目之——坦克大战03
- java项目之——坦克大战 04
- java项目之——坦克大战04.1
- java项目之——坦克大战05
- java项目之——坦克大战06
- java项目之——坦克大战07
- java项目之——坦克大战08
- java项目之——坦克大战09
- java项目之——坦克大战10
- java项目之——坦克大战11
- java项目之——坦克大战12
- java项目之——坦克大战13
- java项目之——坦克大战14
- java项目之——坦克大战15
- java项目之——坦克大战16
- 笔记本硬盘飚速 首款1T 7200转本盘详测
- Windows中环境变量的jdk配置
- C#控制台基础 枚举类型与int,string相互转换
- 项目开发代码规范
- DiscreteSeekBar使用简介,一个带气泡的SeekBar
- java项目之——坦克大战26
- 单例模式
- sql server 2008 R 数据库备份 同名备份文件不覆盖而是叠加处理
- Android okHttp网络请求之Retrofit+Okhttp组合(五)
- java设计模式进阶_iterator
- 判断字符串或者单个字符是否为字母
- Apache Shiro 标签模式授权
- Angularjs 点击文字改变背景色
- c# 文件写入