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;
Java游戏开发之坦克大战代码(5)
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:http://www.heiqu.com/34fa2e4cb3df2ac646cd1064dd4540ad.html