|
|
- /*
- * super class for any enemy in the game
- * a enemy can spawn at a random location along the border of the map
- * a enemy can also calculate the distance and angle to the player
- * 5-23-16
- */
- package tanks;
-
-
-
- public abstract class Enemy extends Living
- {
- public Enemy()
- {
- super();
- }
-
- public abstract void move();
-
- /*
- * 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(int w, int h)
- {
- int temp=(int)(Math.random()*(4)) + 1;
- if(temp==1)
- {
- y=0;
- x=(int)(Math.random()*(w));
- }
- else if(temp==2)
- {
- y=(int)(Math.random()*(h));
- x=w;
- }
- else if(temp==3)
- {
- y=h;
- x=(int)(Math.random()*(w+1));
- }
- else
- {
- x=0;
- y=(int)(Math.random()*(h - 200));
- }
- }
-
-
- /*
- * Used right triangle algebra to determine distance from x,y of enemy
- * to x,y of player.
- */
- public double distToPlayer(RotationalElement p)
- {
- double d, a, b;
- a=Math.abs(x-p.x);
- b=Math.abs(y-p.y);
- 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(RotationalElement p)
- {
- double a, b, ang;
- a=(x-p.x); //doesnt have to me absolute value since using atan2
- b=(y-p.y);
- ang=Math.atan2(b,a); //atan2 prevents divisible by zero errors
- ang = Math.toDegrees(ang);
- return(ang);
- }
- }
|