java项目之——坦克大战25

原创 2016年08月30日 10:03:09

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

定义相关量:

 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;
   }
   
}








版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java项目之——坦克大战26

本版本做最后的修正:敌人死光重新加入,主战坦克死掉F2重新开始。 1.主类中: 画方法里面判断,如果无敌方坦克,就添加。 if(tanks.size()<=0){ for(int i...

java项目之——坦克大战20

本版本:添加两堵墙。 1.在主类中:墙对象 Wall w1 = new Wall(100, 200, 20, 150, this), w2 = new Wall(300, 100, 300, 20,...

java项目之——坦克大战14

上一个版本:坦克打出多发子弹; 功能:解决炮弹不消亡的问题,解决坦克出界问题。            子弹打中对方坦克或者出界,定义一个控制生死的变量。

java项目之——坦克大战10

实现了坦克的移动,现在要实现坦克可以打出炮弹: 功能:添加子弹类,添加方法和参数。 1.位置和方向属性 int x,y; Tank.Direction dir; 2.构造方法...

java项目之——坦克大战19

本版本:让敌人的坦克更加智能(人工智能) 1.首先让它动起来:方向(move) 然后 随机数产生器 a.坦克中加方法: public Tank(int x,int y,Boolean good,...

java项目之——坦克大战24

图形化表示主战坦克的生命值 a.我们在坦克里面创造内部类: private BloodBar bb= new BloodBar(); b.根据不同 的life值来显示,吧它放在坦克的上面...

java项目之——坦克大战08

功能:然坦克向八个方向行走。(以前只有四个方向)。 内容:添加代表方向的量(枚举)             添加记录按键状态的布尔量     &...

java项目之——坦克大战05

功能:代码重构(设置常量,比较简单) 内容:需要多处改变的量定义为常量。 public static final int GAME_WIDTH =800; public static final ...

java项目之——坦克大战17

版本:写出爆炸类,实现爆炸功能 1.爆炸类创建及测试: public class Explode { int x,y; private boolean live = true;...

java项目之——坦克大战18

本版本:画出多辆坦克。 1.创建敌方坦克集合 List tanks = new ArrayList();2.循环画出,坦克对象t public void paint(Graphics g) { ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)