package com.basic.study.tank.tank1;
import java.awt.*;
import java.util.Vector;
/**
* @author hu
* @version 1.0
* 父类
*/
public class Tank {
private int x, y;//坦克的xy坐标
private int direct;//0 上,1右 2下 3左
private int speed = 1;//坦克速度
private boolean isLive = true; //坦克存活状态
Vector<EnemyTank> list = EnemyTank.list;
public boolean isLive() { // 返回坦克状态
return isLive;
}
public void setLive(boolean live) { //设置坦克状态
isLive = live;
}
/**
* 以下方法分别返回坦克的横纵坐标以及方向,或者是设置
*
* @return
*/
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 getDirect() {
return direct;
}
public void setDirect(int direct) {
this.direct = direct;
}
public void reverseDirect() {
switch (this.getDirect()) {
case 0 :
this.setDirect(2);
break;
case 1:
this.setDirect(3);
break;
case 2:
this.setDirect(0);
case 3:
this.setDirect(1);
}
}
public Tank(int x, int y) {
this.x = x;
this.y = y;
}
/**
* 坦克移动,上下左右
*/
public void moveUp() {
this.setDirect(0);
y -= speed;
}
public void moveDown() {
this.setDirect(2);
y += speed;
}
public void moveLeft() {
this.setDirect(3);
x -= speed;
}
public void moveRight() {
this.setDirect(1);
x += speed;
}
public int getSpeed() {
return speed;
} //返回坦克速度
public void setSpeed(int speed) {
this.speed = speed;
}
public boolean tankP() {
// 重叠 0 上,1右 2下 3左,由于时间问题,未完善,可使用up主韩顺平的代码
// switch (this.getDirect()) {
// case 0:
// case 2:
// for (int i = 0; i < list.size(); i++) {
// EnemyTank tank = list.get(i);
// if (tank != this) {
// switch (tank.getDirect()) {
// case 0:
// case 2:
// if (tank.getX() >= this.getX() - 40 && tank.getX() <= this.getX() + 40) {
// if (tank.getY() >= this.getY() && tank.getY() <= this.getY() + 60) {
// return true;
// }
// if (tank.getY() <= this.getY() && tank.getY() + 60 >= this.getY()) {
// return true;
// }
// }
// break;
// case 1:
// case 3:
// if (tank.getX() >= this.getX() - 60 && tank.getX() <= this.getX() + 40) {
// if (tank.getY() > this.getY() && tank.getY() < this.getY() + 60) {
// return true;
// }
// if (tank.getY() <= this.getY() && tank.getY() + 40 >= this.getY()) {
// return true;
// }
// }
// break;
// }
// }
// }
// break;
// case 1:
// case 3:
// for (int j = 0; j < list.size(); j++) {
// EnemyTank tank = list.get(j);
// if (tank != this) {
// switch (tank.getDirect()) {
// case 0:
// case 2:
// if (tank.getX() >= this.getX() - 40 && tank.getX() <= this.getX() + 60) {
// if (tank.getY() > this.getY() && tank.getY() < this.getY() + 40) {
// return true;
// } else if (tank.getY() <= this.getY() && tank.getY() + 60 >= this.getY()) {
// return true;
// }
// }
// break;
// case 1:
// case 3:
// if (tank.getX() >= this.getX() - 60 && tank.getX() <= this.getX() + 60) {
// if (tank.getY() >= this.getY() && tank.getY() <= this.getY() + 40) {
// return true;
// }
// if (tank.getY() <= this.getY() && tank.getY() + 40 >= this.getY()) {
// return true;
// }
// }
// break;
// }
// break;
// }
//
// }
// }
// return false;
//判断当前敌人坦克(this) 方向
switch (this.getDirect()) {
case 0: //上
//让当前敌人坦克和其它所有的敌人坦克比较
for (int i = 0; i < list.size(); i++) {
//从vector 中取出一个敌人坦克
EnemyTank enemyTank = list.get(i);
//不和自己比较
if (enemyTank != this) {
//如果敌人坦克是上/下
//老韩分析
//1. 如果敌人坦克是上/下 x的范围 [enemyTank.getX(), enemyTank.getX() + 40]
// y的范围 [enemyTank.getY(), enemyTank.getY() + 60]
if (enemyTank.getDirect() == 0 || enemyTank.getDirect() == 2) {
//2. 当前坦克 左上角的坐标 [this.getX(), this.getY()]
if (this.getX() >= enemyTank.getX()
&& this.getX() <= enemyTank.getX() + 40
&& this.getY() >= enemyTank.getY()
&& this.getY() <= enemyTank.getY() + 60) {
return true;
}
//3. 当前坦克 右上角的坐标 [this.getX() + 40, this.getY()]
if (this.getX() + 40 >= enemyTank.getX()
&& this.getX() + 40 <= enemyTank.getX() + 40
&& this.getY() >= enemyTank.getY()
&& this.getY() <= enemyTank.getY() + 60) {
return true;
}
}
//如果敌人坦克是 右/左
//老韩分析
//1. 如果敌人坦克是右/左 x的范围 [enemyTank.getX(), enemyTank.getX() + 60]
// y的范围 [enemyTank.getY(), enemyTank.getY() + 40]
if (enemyTank.getDirect() == 1 || enemyTank.getDirect() == 3) {
想做大学士
- 粉丝: 42
- 资源: 4
最新资源
- 基于java的自习室预订系统设计与实现.docx
- 不平衡电网有源电力滤波器,不平衡电网APF,L型有源电力滤波器,谐波补偿,APF simulink仿真,电力电子仿真 提供参考文献
- 宠物咖啡馆平台的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 宠物领养系统的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 大学生竞赛管理系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 大型商场应急预案管理系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 大学城水电管理系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 热站 SMART程序 西门子PLC一拖二热站自控系统程序,2个循环泵,2个补水泵,循环泵与补水泵采用一用一备,按设置时间自动切,硬件:西门子200smart sr30 PLC+昆仑通泰触摸屏,程序有完
- 大学生入学审核系统的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 大学生就业招聘系统的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 大学生租房平台的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 电影评论网站系统设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 党员教育和管理系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 房产销售系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 房屋租赁管理系统的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 服装生产管理的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈