コード例 #1
0
 /**
  * Renvoie la direction vers une entité.
  *
  * @param id L'id de l'entité vers laquelle on se dirige.
  * @return
  */
 public int getDistance(int id) {
   int dst = 0;
   EntityKnowledge ke = getEntity(id);
   if (ke != null) {
     dst = (int) Math.sqrt((ke.getY() - y) * (ke.getY() - y) + (ke.getX() - x) * (ke.getX() - x));
     return dst;
   }
   return 0;
 }
コード例 #2
0
 /**
  * Renvoie la direction vers une entité.
  *
  * @param id L'id de l'entité vers laquelle on se dirige.
  * @return
  */
 public int getHeading(int id) {
   int angle = 0;
   EntityKnowledge ke = getEntity(id);
   if (ke != null) {
     double radian = Math.atan2((ke.getY() - y), (ke.getX() - x));
     angle = (int) Math.toDegrees(radian);
     return angle;
   }
   return 0;
 }
コード例 #3
0
  public double getBestShootAngle(EntityKnowledge target) {
    /*double nbTick = 6.0; // Le nombre de tick d'avance que l'on calcule

    double speed = 0.0;
    if (target.getType().equals(Names.EXPLORER)) {
    	speed = WarExplorer.SPEED;
    } else if (target.getType().equals(Names.ROCKET_LAUNCHER)) {
    	speed = WarRocketLauncher.SPEED;
    }

    int dx = (int) (Math.cos(Math.toRadians(target.getHeading())) * speed * nbTick);
    int dy = (int) (Math.sin(Math.toRadians(target.getHeading())) * speed * nbTick);
    System.out.println(dx + " " + dy + " " + speed);*/

    int dx = 0;
    int dy = 0;

    Point p = new Point(target.getX() + dx, target.getY() + dy);
    Point here = new Point(x, y);

    return here.heading(p);
  }