关闭

java项目之——坦克大战25

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

本版本:添加一个血块类,让其固定轨迹运动。

定义相关量:

 int x,y,w,h;
   TankClient tcClient;
   
   private boolean live = true;

简单轨迹(在游戏轨迹里面,是给出曲线,然后沿着它运动,在这里简单处理为几个点)

private int[][] pos = {{350,300},{360,300},{375,275},{400,200}
                      ,{360,270},{365,290},{340,280}} ;
  

定义step:

 int step  = 0; 


构造函数方法与画方法:

public  Blood(){
	   x= pos[0][0];
	   y= pos[0][1];
	   w=h=15;
   }
   
   public void draw(Graphics g){
	   if(!live) return;
	   
	   Color c = g.getColor();
	   g.setColor(Color.MAGENTA);
	   g.fillRect(x, y, w, h);
	   g.setColor(c);
       
	   move();                   //花一次 move一次 
   }

写move方法

 private void move() {
	    step++;
	    if(step == pos.length){
	    	step = 0;
	    }
	    x = pos[step][0];
	    y = pos[step][0];
	
    }

2.在坦克类中 写吃方法:

public boolean eat(Blood b){
		if(this.live && this.getRect().intersects(b.getRect()) && b.isLive()){
			this.life = 100;
			b.setLive(false);
			return true;
		}
		return false;
	}

在加血类中补充:

 public boolean isLive(){
       return live;   
   }
   
   public void setLive(boolean live){ 
       this.live = live;
   }

3.在主类中:创建对象,画出血块,调用eat;

Blood b =  new Blood(); 

b.draw(g);
    	w1.draw(g);
    	w2.draw(g);
		myTank.draw(g);	
		myTank.eat(b);

总结;到此坦克项目基本结束,补充一个版本,重新开始,重新加入坦克。

附 加血代码:

public class Blood {
   int x,y,w,h;
   TankClient tcClient;
   
   private boolean live = true;
   
   int step = 0;
   
   private int[][] pos = {{350,300},{360,300},{375,275},{400,200},{360,270},{365,290},{340,280}} ;
   
   public  Blood(){
	   x= pos[0][0];
	   y= pos[0][1];
	   w=h=15;
   }
   
   public void draw(Graphics g){
	   if(!live) return;
	   
	   Color c = g.getColor();
	   g.setColor(Color.MAGENTA);
	   g.fillRect(x, y, w, h);
	   g.setColor(c);
       
	   move();
   }

   private void move() {
	    step++;
	    if(step == pos.length){
	    	step = 0;
	    }
	    x = pos[step][0];
	    y = pos[step][0];
	
    }
   
   public  Rectangle getRect(){
	   return new Rectangle(x, y, w, h);
   }
   
   public boolean isLive(){
       return live;   
   }
   
   public void setLive(boolean live){ 
       this.live = live;
   }
   
}








0
0
查看评论

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

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

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

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

java项目之——坦克大战06

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

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
  • 478

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
  • 360

java项目之——坦克大战16

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

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项目之——坦克大战23

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

java项目之——坦克大战12

解决坦克停下来也可以打出炮弹:画出炮筒,在fire中把子弹方向给炮筒 1.创建坦克炮筒常量并初始化: private Direction ptDir = Direction.D;2.在draw方法里面画出炮筒 public void draw(Graphics g) { ...
  • chdyiboke
  • chdyiboke
  • 2016-08-14 11:45
  • 226

java项目之——坦克大战14

上一个版本:坦克打出多发子弹; 功能:解决炮弹不消亡的问题,解决坦克出界问题。            子弹打中对方坦克或者出界,定义一个控制生死的变量。
  • chdyiboke
  • chdyiboke
  • 2016-08-28 08:01
  • 397
    个人资料
    • 访问:70147次
    • 积分:1817
    • 等级:
    • 排名:千里之外
    • 原创:116篇
    • 转载:16篇
    • 译文:0篇
    • 评论:15条
    最新评论