IBasicEvents2 MembersRobocode Robot API for .NET

The IBasicEvents2 type exposes the following members.
Methods

  NameDescription
Public methodOnBattleEnded
This method is called after end of the battle, even when the battle is aborted. You should override it in your robot if you want to be informed of this event.

Examples

public void OnBattleEnded(BattleEndedEvent evnt)
{
    Out.WriteLine("The battle has ended");
}
Public methodOnBulletHit
This method is called when one of your bullets hits another robot. You should override it in your robot if you want to be informed of this event.

Examples

public void OnBulletHit(BulletHitEvent evnt)
{
    Out.WriteLine("I hit " + evnt.Name + "!");
}
(Inherited from IBasicEvents.)
Public methodOnBulletHitBullet
This method is called when one of your bullets hits another bullet. You should override it in your robot if you want to be informed of this event.

Examples

public void OnBulletHitBullet(BulletHitBulletEvent evnt)
{
    Out.WriteLine("I hit a bullet fired by " + evnt.Bullet.Name + "!");
}
(Inherited from IBasicEvents.)
Public methodOnBulletMissed
This method is called when one of your bullets misses, i.e. hits a wall. You should override it in your robot if you want to be informed of this event.

Examples

public void OnBulletMissed(BulletMissedEvent evnt)
{
    Out.WriteLine("Drat, I missed.");
}
(Inherited from IBasicEvents.)
Public methodOnDeath
This method is called if your robot dies.

You should override it in your robot if you want to be informed of this event. Actions will have no effect if called from this section. The intent is to allow you to perform calculations or print something out when the robot is killed.
(Inherited from IBasicEvents.)
Public methodOnHitByBullet
This method is called when your robot is hit by a bullet. You should override it in your robot if you want to be informed of this event.

Examples

void OnHitByBullet(HitByBulletEvent evnt)
{
    Out.WriteLine(event.RobotName + " hit me!");
}
(Inherited from IBasicEvents.)
Public methodOnHitRobot
This method is called when your robot collides with another robot. You should override it in your robot if you want to be informed of this event.

Examples

void OnHitRobot(HitRobotEvent evnt)
{
    if (event.Bearing > -90 && evnt.Bearing <= 90)
    {
        Back(100);
    }
    else
    {
        Ahead(100);
    }
}
public void OnHitRobot(HitRobotEvent evnt)
{
    if (event.Bearing > -90 && evnt.Bearing <= 90)
    {
        SetBack(100);
    }
    else
    {
        SetAhead(100);
    }
}
-- or perhaps, for a more advanced robot --

The angle is relative to your robot's facing. So 0 is straight ahead of you.

This event can be generated if another robot hits you, in which case IsMyFault will return false. In this case, you will not be automatically stopped by the game -- but if you continue moving toward the robot you will hit it (and generate another event). If you are moving away, then you won't hit it.
(Inherited from IBasicEvents.)
Public methodOnHitWall
This method is called when your robot collides with a wall. You should override it in your robot if you want to be informed of this event.

The wall at the top of the screen is 0 degrees, right is 90 degrees, bottom is 180 degrees, left is 270 degrees. But this event is relative to your heading, so: The bearing is such that TurnRight(Double)Bearing will point you perpendicular to the wall.

Examples

void OnHitWall(HitWallEvent evnt)
{
    Out.WriteLine("Ouch, I hit a wall bearing " + evnt.Bearing + " degrees.");
}
(Inherited from IBasicEvents.)
Public methodOnRobotDeath
This method is called when another robot dies. You should override it in your robot if you want to be informed of this event.
(Inherited from IBasicEvents.)
Public methodOnScannedRobot
This method is called when your robot sees another robot, i.e. when the robot's radar scan "hits" another robot. You should override it in your robot if you want to be informed of this event. (Almost all robots should override this!)

This event is automatically called if there is a robot in range of your radar.

Note that the robot's radar can only see robot within the range defined by RADAR_SCAN_RADIUS (1200 pixels).

Also not that the bearing of the scanned robot is relative to your robot's heading.

Examples

void OnScannedRobot(ScannedRobotEvent evnt)
{
    // Assuming radar and gun are aligned... 
    if (event.Distance < 100)
    {
        Fire(3);
    }
    else
    {
        Fire(1);
    }
}

Note:
The game assists Robots in firing, as follows:
  • If the gun and radar are aligned (and were aligned last turn),
  • and the event is current,
  • and you call Fire() before taking any other actions, Robot.Fire(double) will Fire directly at the robot.

In essence, this means that if you can see a robot, and it doesn't move, then Fire will hit it.

AdvancedRobots will NOT be assisted in this manner, and are expected to examine the event to determine if Fire(Double) would hit. (i.e. you are spinning your gun around, but by the time you get the event, your gun is 5 degrees past the robot).
(Inherited from IBasicEvents.)
Public methodOnStatus
This method is called every turn in a battle round in order to provide the robot status as a complete snapshot of the robot's current state at that specific time.

The main benefit of this method is that you'll automatically receive all current data values of the robot like e.g. the x and y coordinate, heading, gun heat etc., which are grouped into the exact same time/turn.

This is the only way to map the robots data values to a specific time. For example, it is not possible to determine the exact time of the robot's heading by calling first calling Time and then Heading afterwards, as the time might change after between the Time and Heading call.
(Inherited from IBasicEvents.)
Public methodOnWin
This method is called if your robot wins a battle.

Your robot could perform a victory dance here! :-)
(Inherited from IBasicEvents.)
Back to Top
See Also