|
@ -5,8 +5,72 @@ |
|
|
*/ |
|
|
*/ |
|
|
package tanks; |
|
|
package tanks; |
|
|
|
|
|
|
|
|
|
|
|
import javax.swing.JFrame; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class Enemy extends Living |
|
|
public class Enemy extends Living |
|
|
{ |
|
|
{ |
|
|
|
|
|
public Enemy |
|
|
|
|
|
{ |
|
|
|
|
|
super(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
enemy spawns at a random location on boarder of map. Random number 1-4 |
|
|
|
|
|
to determine which edge of map enemy spawns. Random number code to |
|
|
|
|
|
determine how far down or how far over player spawns on given edge. |
|
|
|
|
|
*/ |
|
|
|
|
|
public void spawn(JFrame frame) |
|
|
|
|
|
{ |
|
|
|
|
|
int temp=(int)(Math.random()*(5)); |
|
|
|
|
|
if(temp==1) |
|
|
|
|
|
{ |
|
|
|
|
|
y=0; |
|
|
|
|
|
x=(int)(Math.random()*(frame.getWidth()+1)); |
|
|
|
|
|
} |
|
|
|
|
|
else if(temp==2) |
|
|
|
|
|
{ |
|
|
|
|
|
y=(int)(Math.random()*(frame.getHeight()+1)); |
|
|
|
|
|
x=frame.getWidth(); |
|
|
|
|
|
} |
|
|
|
|
|
else if(temp==3) |
|
|
|
|
|
{ |
|
|
|
|
|
y=frame.getHeight(); |
|
|
|
|
|
x=(int)(Math.random()*(frame.getWidth()+1)); |
|
|
|
|
|
} |
|
|
|
|
|
else if(temp==4) |
|
|
|
|
|
{ |
|
|
|
|
|
x=0; |
|
|
|
|
|
y=(int)(Math.random()*(frame.getHeight()+1)); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
Used right triangle algebra to determine distance from x,y of enemy |
|
|
|
|
|
to x,y of player. |
|
|
|
|
|
*/ |
|
|
|
|
|
public double distToPlayer(Player p) |
|
|
|
|
|
{ |
|
|
|
|
|
double d, a, b; |
|
|
|
|
|
a=Math.abs(x-p.getX()); |
|
|
|
|
|
b=Math.abs(y-p.getY()); |
|
|
|
|
|
d=Math.sqrt(a*a+b*b); |
|
|
|
|
|
return(d); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
Found lengths of imaginary triangle between player and enemy. |
|
|
|
|
|
Then used inverse trig to determine angle. |
|
|
|
|
|
*/ |
|
|
|
|
|
public double angleToPlayer(Player p) |
|
|
|
|
|
{ |
|
|
|
|
|
double a, b, ang; |
|
|
|
|
|
a=Math.abs(x-p.getX()); |
|
|
|
|
|
b=Math.abs(y-p.getY()); |
|
|
|
|
|
ang=Math.atan(b/a); |
|
|
|
|
|
return(ang); |
|
|
|
|
|
} |
|
|
} |
|
|
} |