Russian AI Cup

Расширенный поиск  
Страницы: [1]

Автор Тема: Какое значение выдает метод getInitialActionPoints?  (Прочитано 1540 раз)

sv_91

  • Newbie
  • *
  • Сообщений: 2

Метод getInitialActionPoints выдает значение с учетом рядом стоящего командира, или без учета? И если без учета, то как узнать реальное количество очков действия в начале хода?
Записан

amurushkin

  • Sr. Member
  • ****
  • Сообщений: 189
Re: Какое значение выдает метод getInitialActionPoints?
« Ответ #1 : Ноября 26, 2013, 06:57:16 pm »

реальное значение в начале хода содержится в actionpoints
Записан

access_denied

  • Sr. Member
  • ****
  • Сообщений: 282
Re: Какое значение выдает метод getInitialActionPoints?
« Ответ #2 : Ноября 26, 2013, 07:36:58 pm »

getInitialActionPoints - возвращает начальное (максимальное) количество очков действия, специфичное для каждого типа юнита.
getActionPoints - возвращает текущее количество очков действия.

Командирский бонус не влияет на тип юнита, поэтому значение, возвращаемое getInitialActionPoints, не меняется.
Бонус прибавляется к начальным очкам и отражается getActionPoints.
Записан

sv_91

  • Newbie
  • *
  • Сообщений: 2
Re: Какое значение выдает метод getInitialActionPoints?
« Ответ #3 : Ноября 26, 2013, 08:50:08 pm »

Вот только ActionPoints меняется при каждом вызове метода move. А мне нужно количество очков в начале хода (а не в начале метода move).
К тому же, из описания метода getInitialActionPoints не очень понятно, что имеется в виду
"Возвращает количество очков действия, которое даётся бойцу в начале хода." Отсюда и не скажешь, что здесь не учитывается бонус командира. Хотелось бы, чтобы в дальнейшем организаторы выражались более понятно
« Последнее редактирование: Ноября 26, 2013, 08:51:39 pm от sv_91 »
Записан

yizraor

  • Newbie
  • *
  • Сообщений: 9
Re: Какое значение выдает метод getInitialActionPoints?
« Ответ #4 : Ноября 26, 2013, 10:19:26 pm »

А мне нужно количество очков в начале хода (а не в начале метода move).

чтобы определить начало хода бойца, можно при каждом вызове move сохранять следующие значения:
world.getMoveIndex()
self.getTrooperType()
и сравнивать их с результатами этих функций, сохраненными на предыдущем вызове move

примерно так:

    fPrevMoveIndex := fMoveIndex;
    fPrevTrooperType := fTrooperType;

    fMoveIndex := world.getMoveIndex();
    fTrooperType := self.getTrooperType();

    if (fMoveIndex <> fPrevMoveIndex) or (fTrooperType <> fPrevTrooperType) then
    begin
      // начало хода бойца - getActionPoints() покажет сколько же очков действия он имел
      DebugLog_DisplayActionPoints ( self.getActionPoints() );
    end;

а если нужно рассчитать, сколько будет иметь боец очков действия в начале своего хода, до того как наступит его ход, можно проверить тип бойца (чтобы он был не командир и не скаут) и расстояние до командира, и будет ясно, сколько он сможет получить очков действия.
методы game.getCommanderAuraRange(), game.getCommanderAuraBonusActionPoints(), Trooper.getDistanceTo() в помощь
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688
Re: Какое значение выдает метод getInitialActionPoints?
« Ответ #5 : Ноября 26, 2013, 11:13:19 pm »

чтобы определить начало хода бойца, можно при каждом вызове move сохранять следующие значения:
_self.Id

если self.Id изменился значит получил ход новый боец
для того чтоб узнать что наступил новый год нужно мониторить moveindex в game

чур против меня это не использовать  :-X
Записан

Alchemist

  • Newbie
  • *
  • Сообщений: 13
Re: Какое значение выдает метод getInitialActionPoints?
« Ответ #6 : Ноября 27, 2013, 12:24:39 pm »

если self.Id изменился значит получил ход новый боец
Этого мало, боец может быть всего один.
Записан

amurushkin

  • Sr. Member
  • ****
  • Сообщений: 189
Re: Какое значение выдает метод getInitialActionPoints?
« Ответ #7 : Ноября 27, 2013, 12:58:58 pm »

если self.Id изменился значит получил ход новый боец
Этого мало, боец может быть всего один.
ну тогда moveindex изменится
Записан

MiXaeL

  • Newbie
  • *
  • Сообщений: 15
Re: Какое значение выдает метод getInitialActionPoints?
« Ответ #8 : Ноября 27, 2013, 01:07:37 pm »

если self.Id изменился значит получил ход новый боец
Этого мало, боец может быть всего один.
ну тогда moveindex изменится

Как-то у вас все сложно. Я просто держу статическую переменную и ставлю в true, когда завершаю текущий ход.
Записан
Страницы: [1]