import java.util.*; public class Player extends GameItem implements Cloneable { public static final double DEFAULT_RADIUS = 0.06; public static final double COLLIDE_DAMAGE = 0.002; public static final double SHOT_DELAY = 3.0; public String name; public double health; public double r; public double dr; public long lastShotTime; public Player(String name) { this.name = name; this.radius = DEFAULT_RADIUS; this.health = 1.0; this.r = Math.random() * Math.PI * 2; this.x = 0; /* will be assigned by world */ this.y = 0; /* will be assigned by world */ this.dr = 0; this.dx = 0; this.dy = 0; this.lastShotTime = 0; } public Player clone() { Player p = new Player(name); p.radius = radius; p.health = health; p.r = r; p.x = x; p.y = y; p.dr = dr; p.dx = dx; p.dy = dy; return p; } public boolean equals(Player other) { return this.name.equals(other.name) && this.radius == other.radius && this.health == other.health && this.r == other.r && this.dr == other.dr && this.dx == other.dx && this.dy == other.dy && this.x == other.x && this.y == other.y; } public String toString() { return String.format("%s:%.3f:%.3f:%.3f:%.3f:%.3f:%.3f:%.3f:%.3f", name, radius, health, x, y, r, dr, dx, dy); } public void fromString(String s) { StringTokenizer st = new StringTokenizer(s, ":"); Vector tokens = new Vector(); while (st.hasMoreTokens()) { tokens.add(st.nextToken()); } String[] arr = tokens.toArray(new String[1]); if (arr.length != 9) return; name = arr[0]; radius = Double.parseDouble(arr[1]); health = Double.parseDouble(arr[2]); x = Double.parseDouble(arr[3]); y = Double.parseDouble(arr[4]); r = Double.parseDouble(arr[5]); dr = Double.parseDouble(arr[6]); dx = Double.parseDouble(arr[7]); dy = Double.parseDouble(arr[8]); } }