Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Code_Game_Challenge.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
585.22 Кб
Скачать

1.2.2 Снаряды

Каждый снаряд характеризуется двумя основными параметрами:

  • Запасом прочности

Это кол-во урона, которое нужно нанести снаряду, чтобы он разрушился.

  • Запасом урона

Это кол-во урона, который может нанести снаряд.

При столкновении снарядов, каждый наносит друг другу урон. Если какой-либо снаряд растратил весь запас урона, или весь запас прочности – он исчезает.

Таким образом, при столкновении двух снарядов, может возникнуть два случая:

  • Снаряды взаимоуничтожаются

  • Один снаряд уничтожает другой, тратя на это запас урона и теряя запас прочности, и продолжает своё движение.

При столкновении снаряда с юнитом, снаряд наносит урон юниту и исчезает. Команде-владельцу снаряда начисляются очки (Процент_потерянных_жизней * Ценность_корабля * const).

Параметры снарядов:

Тип

Скорость движения

Радиус

Запас прочности

Урон

Диск-мина

Kohr-Ah Marauder

7.0

20

5

4

Струя из Т.О.П.К.И.

Kohr-Ah Marauder

8.0

22

50

4

Ракета

Earthling Cruiser

7.5

30

2

5

Снаряд

Orz Intruder

25.0

16

4

3

Программирование игрока

2.1 Обзор

Вашей команде будут предоставлены заготовки проектов для каждого разрешенного языка программирования. Ваша задача – реализоваться класс MyPlayer. Важно: не переименовывайте этот класс!

В заготовке класса находится 2 метода-заглушки. Вы должны написать реализацию этих методов.

2.2 Инициализация

Когда ваша команда помещается в игровой мир, симулятор вызывает метод Init() вашего игрока. Вы должны поместить весь инициализационный код в этот метод. Будьте осторожны, симулятор выделяет ограниченное количество времени (0.25‍‍ сек) для работы вашего инициализационного кода, прежде чем начнется игра. Если ваш код не укладывается в эти рамки, то ваша команда не будет принимать участие в игре.

Во время инициализации вы сможете дать название своей команде. Для этого необходимо вызвать метод GetWorld()->SetOwnName(). После инициализации, во время проведения матча менять имя невозможно.

2.3 Движение

После инициализации всех игроков, симулятор начинает вызывать метод move() для каждого игрока по очереди. Именно программируя этот метод, вы определяете поведение юнитов вашей команды во время игры.

Ваш игрок может получать информацию о объектах в мире,вызывая метод GetWorld(). Игрок может устанавливать для каждого юнита желаемое изменение скорости, высказывать желание выполнить какое-либо действие. Для этого используется следующий метод: IWorld::GetOwnUnits(). Он возвращает вектор интерфейсов IControllablesArray.

Основная идея алгоритма – это то, что ваш игрок реально не совершает никакие действия. Он только сигнализирует желание их совершить. После того как симулятор выполнит вызов метода move() для каждого игрока на текущем такте времени, он совершает действия, указанные вашим алгоритмом. Во время этой фазы накладываются все ограничения на совершаемые действия. После того как обрабатываются все действия начинается следующий такт времени.

Симулятор выделяет ограниченное количество времени (0.25‍‍ сек) для работы вашего кода. Если ваш код не укладывается в эти рамки, то его выполнение прерывается. Так же выполнение прерывается, если происходит Run-time ошибка или исключение в вашем коде.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]