Мой вариант правил HabraWars

    Тут описана идея товарища @p_r_i_m_a_t.
    Мои соображения по поводу правил под катом:


    1. Битва — сражение между одинаковыми роботами, управляемыми программами участников (далее именуются роботами)
    2. Битва проходит на прямоугольной карте заранее неизвестных размеров, которая состоит из полей. Все объекты в игре размером с поле. Битва происходит в пошаговом режиме
    3. Поля бывают следующих видов:
      • обычное поле — обычное поле. По нему робот может проходить, может простреливать.
      • преграда — не проходимое, не простреливаемое поле
      • (?)вода — не проходимое, но простреливаемое поле
      • (?)«кусты» — проходимое, но не простреливаемое поле
      • «зарядка» — поле с «зарядкой». Становясь на такое поле, робот получает боеприпас/энергию

    4. Роботы обладают следующими параметрами (у всех роботов на старте равными):
      • Уровень жизни — заранее неизвестен. При каждом попадании в робота уменьшается на единицу. Не восстанавливается. При достижении нуля — робот погибает
      • Боезапас — заранее неизвестен. При каждом выстреле робота уменьшается на единицу. Восстанавливается на полях «зарядки» боезапаса.
      • Уровень энергии — заранее неизвестен. Каждый ход уменьшается на единицу. От уровня энергии зависит «меткость» робота (возможно в обратной геометрической прогрессии? тут надо подумать). Может восстанавливаться дружественными роботами, находящимися в соседнем поле, путем перекачивания своей энергии, в количестве (?) 10% от первоначальной энергии за ход

      Роботы управляются программами игроков, программам доступны следующие операции (одна за ход) над роботами:
      • Операции перемещения:поворот влево, поворот вправо, шаг вперед
      • Операция обзора: применив эту операцию (и соответственно постояв на месте), к началу следующего хода робот получает информацию о полях в радиусе 4 клеток от себя (тут опять же надо подумать, может лучше о квадрате вокруг себя, и размер тоже обдумать надо)
      • Операция выстрела: выстрелить в противника в зоне видимости. Чем дальше до противника и меньше энергия стреляющего, тем меньше шансов попасть.
      • Операция «Idle»: стоять, ничего не делать
      • Операция «поделиться энергией»: В коммандной игре перекачать дружественному роботу, находящемуся в соседнем поле, свою энергию
      • Операция сообщения: отослать дружественному роботу, находящемуся недалеко (или в зоне видимости) сообщение. Содержание и смысл сообщений должны заранее обсуждаться с союзниками

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


    5. Вот как то так. Достаточно просто, и по-моему, интересно.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 11

    • UFO just landed and posted this here
        0
        Поддерживаю. Начинать нужно с более простого: ходить, стрелять, прятаться, заряжаться.
      • UFO just landed and posted this here
          0
          А мне очень понравилось. Имхо пошаговость это круто, разные иды клеток тоже, только надо думать над ариантом замощения клеток, кадратные мне кажется не так интересно как шестиугольные (как fallout). Думаю обзор на несколько клеток должен быть по умолчянию на каждом действии, например на расстояние выстрела, а вот более жатьный тщательный обзор можно сделать с затратой ОД.
            0
            Неплохо было бы сделать как в стратегиях, когда карта постепенно открывается и автор робота видит ту часть карты, что робот уже обследовал.
              0
              угу. и 3д.

              окститесь — лишняя сложность никому не нужна.
              0
              Была же недавно статья про CGC, по моему эти же правила можно применить и для HabraWars
                0
                А можно сделать глобальные сообщения?
                Было бы интересней!
                  0
                  И те команды, которые я написал, выполняются в бесконечном цикле?
                    0
                    да, пока робот не сдохнет. перед входом в цикл обновляется состояние вселенной.
                    как в микроконтроллерах настоящих
                      0
                      А никаких «событий» не предусмотрено? В Робокоде например кроме основного метода, который запускается в начале игры, есть еще методы, которые вызываются при определнных событиях, например когда робот врезался в стену, в другого робота, в него попали и тому подобное. Также за один «ход» там считается не команда в коде робота, а действие которое он выполнит. Т.е «много операций расчета действий» + команды на движение и просто комнады на движение займут одинаковое количество «ходов». По моему это гораздо интереснее, чем просто крутить в цикле команды, хотя СoreWars неплохой пример удачного «кручения» кода.

                  Only users with full accounts can post comments. Log in, please.