Java游戏开发之坦克大战代码(5)

public class Tank {
 int x = 0 ;
 int y = 0;
 int direct = 0; //方向
 int type = 0 ;//类型
 int speed = 30;//速度
 int color;
 boolean isLive;
 public int getColor() {
  return color;
 }
 public void setColor(int color) {
  this.color = color;
 }
 public int getS() {
  return speed;
 }
 public void setS(int speed) {
  this.speed = speed;
 }
 public Tank(int x , int y , int direct
   , int type, int speed, boolean isLive){
  this.x = x;
  this.y = y;
  this.direct = direct;
  this.type= type;
  this.speed = speed;
  this.isLive = isLive;
 }
 public int getX() {
  return x;
 }
 public void setX(int x) {
  this.x = x;
 }
 public int getY() {
  return y;
 }
 public void setY(int y) {
  this.y = y;
 }
 public int getD() {
  return direct;
 }
 public void setD(int direct) {
  this.direct = direct;
 }
 public int getT() {
  return type;
 }
 public void setT(int type) {
  this.type = type;
 }
 
}
class EnemyTask extends Tank implements Runnable{
 Vector<shot> ss = new Vector<shot>();
 Vector<EnemyTask>  ets = new Vector<EnemyTask>();
 boolean isdirects = true;
 public EnemyTask(int x, int y, int direct
   , int type, int speed ,boolean isLive) {
  super(x, y, direct, type, speed, isLive);
  // TODO Auto-generated constructor stub
 }
 public boolean isTouchOhterTank (){
  boolean b = false;
  switch (this.direct) {
  case 0://此坦克向上
   for(int i = 0; i < ets.size(); i++){
    EnemyTask et = ets.get(i);
    if(et != this){
     if(et.direct == 0 || et.direct == 1){//上或下
      if((this.x>=et.x && this.x <= et.x + 20//第一个点x在内
      && this.y>=et.y && this.y <= et.y + 30)//第一个点y在内
      ||(this.x + 20>=et.x && this.x+ 20 <= et.x + 20//第二个点x在内
      && this.y >=et.y && this.y <= et.y + 30)//第二个点y在内
      ){
       b = true;
       
      }
     }
     if(et.direct == 2 || et.direct == 3){//左或右
      if((this.x>=et.x && this.x <= et.x + 30//第一个点x在内
      && this.y>=et.y && this.y <= et.y + 20)//第一个点y在内
      ||(this.x + 20>=et.x && this.x+ 20 <= et.x + 30//第二个点x在内
      && this.y >=et.y && this.y <= et.y + 20)//第二个点y在内
      ){
       b = true;
      }
     }
    }
   
   }
   
   break;
  case 1://向下
   for(int i = 0; i < ets.size(); i++){
    EnemyTask et = ets.get(i);
    if(et != this){
     if(et.direct == 0 || et.direct == 1){//上或下
      if((this.x>=et.x && this.x <= et.x + 20//第一个点x在内
      && this.y + 30>=et.y && this.y + 30 <= et.y + 30)//第一个点y在内
      ||(this.x + 20>=et.x && this.x+ 20 <= et.x + 20//第二个点x在内
      && this.y + 30>=et.y && this.y + 30 <= et.y + 30)//第二个点y在内
      ){
       b = true;
      }
     }
     if(et.direct == 2 || et.direct == 3){//左或右
      if((this.x>=et.x && this.x <= et.x + 30//第一个点x在内
      && this.y + 30 >=et.y && this.y + 30 <= et.y + 20)//第一个点y在内
      ||(this.x + 20 >=et.x && this.x+ 20 <= et.x + 30//第二个点x在内
      && this.y + 30 >=et.y && this.y + 30 <= et.y + 20)//第二个点y在内
      ){
       b = true;
      }
     }
    }
   
   }
   
   break;
  case 2:
   for(int i = 0; i < ets.size(); i++){
    EnemyTask et = ets.get(i);
    if(et != this){
     if(et.direct == 0 || et.direct == 1){//上或下
      if((this.x>=et.x && this.x <= et.x + 20//第一个点x在内
      && this.y>=et.y && this.y <= et.y + 30)//第一个点y在内
      ||(this.x >=et.x && this.x<= et.x + 20//第二个点x在内
      && this.y + 20 >=et.y && this.y + 20  <= et.y + 30)//第二个点y在内
      ){
       b = true;
      }
     }
     if(et.direct == 2 || et.direct == 3){//左或右
      if((this.x>=et.x && this.x <= et.x + 30//第一个点x在内
      && this.y>=et.y && this.y <= et.y + 20)//第一个点y在内
      ||(this.x >=et.x && this.x<= et.x + 30//第二个点x在内
      && this.y + 20>=et.y && this.y + 20 <= et.y + 20)//第二个点y在内
      ){
       b = true;
      }
     }
    }
   
   }
   break;
  case 3:
   for(int i = 0; i < ets.size(); i++){
    EnemyTask et = ets.get(i);
    if(et != this){
     if(et.direct == 0 || et.direct == 1){//上或下
      if((this.x + 30>=et.x && this.x + 30 <= et.x + 20//第一个点x在内
      && this.y>=et.y && this.y <= et.y + 30)//第一个点y在内
      ||(this.x + 30 >=et.x && this.x+ 30 <= et.x + 20//第二个点x在内
      && this.y + 20 >=et.y && this.y + 20  <= et.y + 30)//第二个点y在内
      ){
       b = true;
      }
     }
     if(et.direct == 2 || et.direct == 3){//左或右
      if((this.x + 30>=et.x && this.x + 30 <= et.x + 30//第一个点x在内
      && this.y>=et.y && this.y <= et.y + 20)//第一个点y在内
      ||(this.x  + 30>=et.x && this.x+ 30 <= et.x + 30//第二个点x在内
      && this.y + 20>=et.y && this.y + 20 <= et.y + 20)//第二个点y在内
      ){
       b = true;
      }
     }
    }
   
   }
 break;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/34fa2e4cb3df2ac646cd1064dd4540ad.html