В данной статье приводится пример создания простого робота для Robocode в .Net на языке C#.
Для разработки использовалась Visual Studio 2008. Если работать в Visual Studio 2010, то в свойствах проекта нужно будет изменить версию фреймворка .Net с 4 на 3.5.
Сначала нужно создать новый проект из шаблона «библиотека классов» (Class Library).
После этого нужно добавить ссылку на библиотеку Robocode .Net, которая, если во время установки использовать путь по умолчанию, находится в папке C:\robocode\libs. Файл называется robocode.dll.
Дальше желательно удалить пустой класс в новом проекте Class1.cs и добавить новый класс MyRobot.cs.
Ниже приведен код простого бота, который можно добавить в новый класс.
// Оригинальный код от FNL, источник:
// http://robowiki.net/wiki/Robocode/.NET/Create_a_.NET_robot_with_Visual_Studio
// Доступ к стандартной системе .Net
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
// Доступ к общей API Робокода
using Robocode;
// По соглашению, пространство имен должно называться инициалами разработчика,
// но в нашем случае используем имя всего проекта по трансляции ботов на .Net
namespace RobocodeBotsDotNet
{
// Имя робота - MyRobot, тип робота - Robot
class MyRobot : Robot
{
// Главный метод робота, содержащий его логику
public override void Run()
{
// -- Инициализация робота --
// Повернуть робота вертикально вверх, а
// пушку повернуть на 90 градусов
TurnLeft(Heading - 90);
TurnGunRight(90);
// Бесконечный цикл нужен для того, чтобы робот
// выполнял свою программу до самого конца раунда
while (true)
{
// -- Эти команды повторяются бесконечно --
// Проехать 5000 пикселов вперед
Ahead(5000);
// Повернуть робота на 90 градусов
TurnRight(90);
// Наш робот будет двигаться вдоль границ поля
// боя, повторяя две инструкции выше.
}
}
// Обработчик события робота, когда робот
// видит другого робота
public override void OnScannedRobot(ScannedRobotEvent e)
{
// Сделать выстрел с мощностью пули = 1
Fire(1);
}
}
}
Соглашения по именованию роботов.
В Робокоде используется соглашение по именованию роботов, согласно которому каждый робот должен принадлежать уникальному пространству имен, как инициалы или никнейм.
В таком случае возможны следующие ситуации:
- В битве могут участвовать роботы с одинаковыми именами, только если они определены в разных пространствах имен.
- В одном пространстве имен может быть несколько имен, и будет хорошо, если другие участники боев будут знать, кому принадлежат эти роботы.
- Во время создания новой битвы будет легко выбрать именно вашего робота.
- Для сохранения данных, робокоду нужно пространство имен. Использование глобальных пространств имен не допускается.
Таким образом, имена роботов обычно записывают следующим образом:
<ваши инициалы>.<имя робота>_<версия робота>
Полное имя робота, которого мы создали выше, может выглядеть следующим образом:
RobocodeBotsDotNet.MyRobot_1.0
Запуск скомпилированного робота в Робокоде.
В настройках робокода нужно указать путь, по которому могут находиться библиотеки роботов. Для этого в меню Options -> Preferences -> Development Options нажмите кнопу Add и выберите тот путь, куда попадают скомпилированные библиотеки проекта. Это может быть папка \bin\debug или \bin\release, которая находится в папке всего проекта.
Таким образом, если в Visual Studio изменить бота и скомпилировать, то при перезапуске битвы на поле боя будет находиться уже новая версия бота.