关闭

java项目之——坦克大战18

标签: java项目
499人阅读 评论(0) 收藏 举报
分类:

本版本:画出多辆坦克。

1.创建敌方坦克集合

List<Tank> tanks = new ArrayList<Tank>();
2.循环画出,坦克对象t

public void paint(Graphics g) {
		g.drawString("missiles count:"+missiles.size(), 10,50);
	    for (int i = 0; i < missiles.size(); i++) {
			Missile m = missiles.get(i);
			m.draw(g);
			m.hitTanks(tanks);
		}
            
	    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.draw(g);
	    }
	 
		myTank.draw(g);	
		
	}

3.在launchFrame中添加进入集合。

public void lauchFrame(){
		for(int i=0;i<10;i++){
			tanks.add(new Tank(50+40*(i+1),50,false,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());
	}

4.打坦克,hitTanks 创建

public boolean hitTanks(List<Tank> tanks){
		for(int i=0;i<tanks.size();i++){
			if(hitTank(tanks.get(i))){
				return true;
			}
		}
		return false;
	}
在 主方法里面调用hitTanks(),这样就完成了。

m.hitTanks(tanks);
运行结果:


总结:本版本画出多个敌方坦克,同样使用了泛型,没有了敌方坦克,我方坦克打击tanks,所以重新构建hittank方法。


下一个版本:让敌方坦克更加智能(涉及到一个小算法,面试中容易被问到,比较重要)

0
0
查看评论

【Java_项目篇<1>】--JAVA实现坦克大战游戏--画出坦克(一)

为什么选择这个项目? 1.好玩,有趣 2.涉及到java基础的各个方面的技术: 面向对象思想、多线程、IO、绘图技术、监听事件、数据库、界面编程 3.巩固旧的知识 黑色框为JFrame 红色框为JPanel ,由于JFrame不提供画图方法,所以我们只能在JPanel里画图,最后把JPa...
  • qq_24653023
  • qq_24653023
  • 2016-08-16 22:43
  • 8947

Java之详解坦克大战游戏(四)

目前我们的坦克能发子弹,但是只能发一颗,而且打到敌人坦克敌人还不会消失,本篇我们就来解决这个问题…子弹要想做到连发,就得初始化多个子弹,这个时候我们仍然还是跟定义敌人的坦克组一样用Vector集合..class Hero extends Tank { //子弹 Vector<S...
  • lxjstudyIT
  • lxjstudyIT
  • 2016-07-23 22:37
  • 1827

java项目之——坦克大战06

功能:让坦克运动由我们来控制 内容:添加键盘监听类keyMonitor。            TankClient添加键盘监听器。      ...
  • chdyiboke
  • chdyiboke
  • 2016-08-12 17:43
  • 237

java项目之——坦克大战20

本版本:添加两堵墙。 1.在主类中:墙对象 Wall w1 = new Wall(100, 200, 20, 150, this), w2 = new Wall(300, 100, 300, 20, this); for (int i = 0; i < missiles.size(); i...
  • chdyiboke
  • chdyiboke
  • 2016-08-29 20:26
  • 504

java项目之——坦克大战15

在15版本之前解决了坦克和炮弹的问题,现在,开始写敌方坦克的代码。 1.加入区别敌我的量bGood(也可以建一个敌方坦克类,在这没有必要) private boolean good; 2。修改构造方法 public Tank(int x,int y,boolean good){ th...
  • chdyiboke
  • chdyiboke
  • 2016-08-28 08:56
  • 384

java项目之——坦克大战01

功能:产生一个窗口。 知识点:主类继承Frame类 import java.awt.Frame; public class TankClient extends Frame { public void lauchFrame(){ this.setSize(400,300); t...
  • chdyiboke
  • chdyiboke
  • 2016-08-08 20:01
  • 307

java项目之——坦克大战16

版本:一颗子弹击中敌方坦克——面向对象思维分析            是否打中:hatTank方法;(游戏中碰撞检测,有些复杂,一般直接调用库方法)在这里我们应用碰撞类:getRect(返回值Rec...
  • chdyiboke
  • chdyiboke
  • 2016-08-28 10:19
  • 295

java项目之——坦克大战23

本版本:主战坦克的生命值。 加入表示生命值的量:life 1.坦克类中:定义变量life private int life = 100;产生getlife和setlife方法 public int getLife() { return life; } public voi...
  • chdyiboke
  • chdyiboke
  • 2016-08-29 21:32
  • 356

java项目之——坦克大战11

功能:1.根据主战坦克的方向和位置,打出子弹,Ctrl键的按键处理             2.根据“坦克打出一发子弹”这句话,来确定Tank中的方法fire,其返回值为Missl...
  • chdyiboke
  • chdyiboke
  • 2016-08-13 23:05
  • 424

java项目之——坦克大战24

图形化表示主战坦克的生命值 a.我们在坦克里面创造内部类: private BloodBar bb= new BloodBar(); b.根据不同 的life值来显示,吧它放在坦克的上面。 private class BloodBar{ public void draw(Gr...
  • chdyiboke
  • chdyiboke
  • 2016-08-29 22:04
  • 401
    个人资料
    • 访问:70976次
    • 积分:1828
    • 等级:
    • 排名:千里之外
    • 原创:116篇
    • 转载:16篇
    • 译文:0篇
    • 评论:15条
    最新评论