public override void Run() { Robot.BodyColor = System.Drawing.Color.Pink; if (Robot.RadarTurnRemaining == 0) { Robot.SetTurnRadarLeft(360); } double xMiddle = Robot.BattleFieldWidth / 2; double yMiddle = Robot.BattleFieldHeight / 2; if (!isTurning && !isDriving) { Robot.SetTankHeadingTo(CoordinateHelper.GetAngle(Robot.X, Robot.Y, xMiddle, yMiddle)); isTurning = true; } else if (Robot.TurnRemaining == 0 && !isDriving) { Robot.SetAhead(200); isDriving = true; } else if (Robot.DistanceRemaining == 0 && Robot.TurnRemaining == 0) { Robot.CurrentPhase = RoboPhase.WallRush; Robot.TargetEnemyName = null; Robot.AttackerEnemyName = null; } }
private void Scan() { var pos = Robot.GetLastTargetCoordinates(); if (pos.X == 0 && pos.Y == 0) { return; } double degrees = CoordinateHelper.GetAngle(Robot.X, Robot.Y, pos.X, pos.Y); double diff = (degrees - Robot.RadarHeading) + 180; if (Robot.RadarTurnRemaining == 0) { if (scanLeft) { Robot.SetRadarHeadingTo(degrees + 45); scanLeft = false; } else { Robot.SetRadarHeadingTo(degrees - 45); scanLeft = true; } } //Robot.SetRadarHeadingTo(degrees - 45); //Robot.SetRadarHeadingTo(degrees + 45); }
private void Shoot(double power) { double degrees = CoordinateHelper.GetAngle(Robot.X, Robot.Y, Robot.Target.X, Robot.Target.Y); Robot.SetGunHeadingTo(degrees); if (Robot.GunTurnRemaining <= 0 && Robot.GunHeat == 0 && Robot.Target.X > 0 && Robot.Target.Y > 0) { Robot.SetFire(power); } }