/** * 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; }
/** * 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; }
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); }