Exemplo n.º 1
0
 public override void update()
 {
     if (robot.GunHeat == 0)
     {
         robot.SetFire(Rules.MAX_BULLET_POWER);
     }
     else
     {
         double moveAdust = robot.RadarHeading - robot.Heading;
         if (moveAdust > 180)
         {
             moveAdust -= 360;
         }
         if (moveAdust < -180)
         {
             moveAdust += 360;
         }
         robot.SetTurnRight(moveAdust);
         robot.SetAhead(0);
         // if(enemyBearing < 75 && enemyBearing > -75) //enemy in front of us
         // {
         robot.SetAhead(250);
         // }
     }
 }
Exemplo n.º 2
0
 public void getOnHitRobot(HitRobotEvent evnt)
 {
     robotHit = true;
     if (robot.GunHeat == 0)
     {
         robot.SetFire(Rules.MAX_BULLET_POWER);
     }
     robot.SetAhead(100);
 }
Exemplo n.º 3
0
            public void OnScannedRobotHandler(ScannedRobotEvent e)
            {
                // Ignore our teammates if scanned
                if (e.Name == "CAP4053.Benchmark.WreckItRalph (1)" || e.Name == "CAP4053.Benchmark.WreckItRalph (2)" || e.Name == "CAP4053.Benchmark.TrevBot (1)" || e.Name == "CAP4053.Benchmark.TrevBot (2)")
                {
                    return;
                }

                lastKnownLocation = e;
                enemyFound        = true;
                finalCountdown    = initCountdown;

                double radarHeading = 1.9 * Utils.NormalRelativeAngle(r.HeadingRadians - r.RadarHeadingRadians + e.BearingRadians);
                double bodyHeading  = smallestAngle(r.RadarHeadingRadians - r.HeadingRadians);
                double gunHeading   = smallestAngle(r.HeadingRadians - r.GunHeadingRadians + e.BearingRadians);

                // Calculate firing angle using Linear Targeting
                if (fireAtEnemy && r.GunHeat == 0 && System.Math.Abs(r.GunTurnRemaining) < 10)
                {
                    gunHeading = Utils.NormalRelativeAngle(((r.HeadingRadians + e.BearingRadians)
                                                            + Math.Asin(e.Velocity / (20 - firePower * 3)
                                                                        * Math.Sin(e.HeadingRadians - (r.HeadingRadians + e.BearingRadians)))
                                                            - r.GunHeadingRadians));
                    r.SetFire(firePower);
                }

                r.SetTurnRightRadians(direction * (bodyHeading + Math.PI / 2)); // Circle the opponent
                r.SetTurnRadarRightRadians(radarHeading);
                r.SetTurnGunRightRadians(gunHeading);

                // Employ Stop and GO movement to confuse enemy tracking
                if (enemyEnergy > (enemyEnergy = e.Energy))
                {
                    r.SetAhead(movementDistance);
                }
            }