public LXXPoint getDestination(boolean newSession) { double angle = robot.getHeadingRadians() + Math.PI / 2; LXXPoint res1 = new LXXPoint(robot.getX(), robot.getY()); res1.x += sin(angle) * 85; res1.y += cos(angle) * 85; double d1 = res1.distance(robot.getBattleFieldWidth() / 2, robot.getBattleFieldHeight() / 2); angle = robot.getHeadingRadians() - Math.PI / 2; LXXPoint res2 = new LXXPoint(robot.getX(), robot.getY()); res2.x += sin(angle) * 85; res2.y += cos(angle) * 85; double d2 = res2.distance(robot.getBattleFieldWidth() / 2, robot.getBattleFieldHeight() / 2); return d1 < d2 ? res1 : res2; }
public boolean match() { for (Iterator<Hit> iter = hits.iterator(); iter.hasNext(); ) { Hit h = iter.next(); if (robot.getTime() - h.time > 20) { iter.remove(); } } double avgBearing = 0; for (Hit h : hits) { avgBearing += h.heading; } avgBearing /= hits.size(); // todo (zhidkov): fix name double maxHz = 0; for (Hit h : hits) { if (abs(h.heading - avgBearing) > maxHz) { maxHz = abs(h.heading - avgBearing); } } return abs(avgBearing - maxHz) < LXXConstants.RADIANS_45 && hits.size() > 1; }
public HitReactStrategy(BasicRobot robot) { this.robot = robot; robot.addListener(this); }