|
|
|
@ -4,26 +4,28 @@ import java.awt.*;
|
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
|
|
|
|
public class Tank {
|
|
|
|
|
private static final int SPEED = 1;
|
|
|
|
|
private static final int SPEED = 2;
|
|
|
|
|
|
|
|
|
|
public static int WIDTH = ResourceMgr.GoodTankD.getWidth();
|
|
|
|
|
public static int HEIGHT = ResourceMgr.GoodTankD.getHeight();
|
|
|
|
|
public static int WIDTH = ResourceMgr.goodTankU.getWidth();
|
|
|
|
|
public static int HEIGHT = ResourceMgr.goodTankU.getHeight();
|
|
|
|
|
|
|
|
|
|
Rectangle rect = new Rectangle();
|
|
|
|
|
|
|
|
|
|
private Random random = new Random();
|
|
|
|
|
|
|
|
|
|
private int x,y;
|
|
|
|
|
public int x,y;
|
|
|
|
|
|
|
|
|
|
private Dir dir = Dir.DOWN;
|
|
|
|
|
public Dir dir = Dir.DOWN;
|
|
|
|
|
|
|
|
|
|
private boolean moving = true;
|
|
|
|
|
|
|
|
|
|
private TankFrame tf = null;
|
|
|
|
|
public TankFrame tf = null;
|
|
|
|
|
|
|
|
|
|
private boolean living = true;
|
|
|
|
|
|
|
|
|
|
private Group group = Group.BAD;
|
|
|
|
|
public Group group = Group.BAD;
|
|
|
|
|
|
|
|
|
|
FireStrategy fs;
|
|
|
|
|
|
|
|
|
|
public Tank(int x, int y, Dir dir, Group group, TankFrame tf) {
|
|
|
|
|
super();
|
|
|
|
@ -37,12 +39,23 @@ public class Tank {
|
|
|
|
|
rect.y = this.y;
|
|
|
|
|
rect.width = WIDTH;
|
|
|
|
|
rect.height = HEIGHT;
|
|
|
|
|
|
|
|
|
|
if(group == Group.GOOD) {
|
|
|
|
|
String goodFSName = PropertyMgr.get("goodFS");
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
fs = (FireStrategy)Class.forName(goodFSName).getDeclaredConstructor().newInstance();
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
fs = new DefaultFireStrategy();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void fire(){
|
|
|
|
|
int bX = this.x + Tank.WIDTH / 2 - Bullet.WIDTH / 2;
|
|
|
|
|
int bY = this.y + Tank.HEIGHT / 2 - Bullet.HEIGHT / 2;
|
|
|
|
|
tf.bullets.add(new Bullet(bX, bY, this.dir, this.group, this.tf));
|
|
|
|
|
fs.fire(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Dir getDir() {
|
|
|
|
@ -123,16 +136,16 @@ public class Tank {
|
|
|
|
|
if (!living) tf.tanks.remove(this);
|
|
|
|
|
switch (dir) {
|
|
|
|
|
case LEFT:
|
|
|
|
|
g.drawImage(this.group == Group.GOOD ? ResourceMgr.GoodTankL : ResourceMgr.BadTankL, x, y, null);
|
|
|
|
|
g.drawImage(this.group == Group.GOOD ? ResourceMgr.goodTankL : ResourceMgr.badTankL, x, y, null);
|
|
|
|
|
break;
|
|
|
|
|
case UP:
|
|
|
|
|
g.drawImage(this.group == Group.GOOD ? ResourceMgr.GoodTankU : ResourceMgr.BadTankU, x, y, null);
|
|
|
|
|
g.drawImage(this.group == Group.GOOD ? ResourceMgr.goodTankU : ResourceMgr.badTankU, x, y, null);
|
|
|
|
|
break;
|
|
|
|
|
case RIGHT:
|
|
|
|
|
g.drawImage(this.group == Group.GOOD ? ResourceMgr.GoodTankR : ResourceMgr.BadTankR, x, y, null);
|
|
|
|
|
g.drawImage(this.group == Group.GOOD ? ResourceMgr.goodTankR : ResourceMgr.badTankR, x, y, null);
|
|
|
|
|
break;
|
|
|
|
|
case DOWN:
|
|
|
|
|
g.drawImage(this.group == Group.GOOD ? ResourceMgr.GoodTankD : ResourceMgr.BadTankD, x, y, null);
|
|
|
|
|
g.drawImage(this.group == Group.GOOD ? ResourceMgr.goodTankD : ResourceMgr.badTankD, x, y, null);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|