Обучение змеи - Бои программируемых змеек

Обучение змеи

Каждая змея, после появления на свет, имеет длину 10 квадратов. Т.е. все новорожденные змеи равны. В этот момент змея не умеет ничего делать, не понимает смысл своего существования. Она будет бесцельно ползать по игровому полю случайно выбирая направления для движения. Хвост соперника съест только в том случае, если тот попадется на пути.

В данной игре вы – тренер.

Ваша задача сделать так, чтобы змея научилась избегать запутывания в своих кольцах и кольцах соперников, находить, догонять и кусать вражеские хвосты.

Для описания поведения змеи совершенно не нужно уметь программировать. Все основано на логике. А процесс обучения прост и нагляден. Даже школьник начальных классов за несколько минут изучения способов обучения может без труда натренировать своего конкурентного война.

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

 

Чему нужно учить змею

1. Змея должна научиться видеть хвост соперника, ползти за ним, нагонять и кусать.

2. Змея должна научиться уходить от возможного запутывания у краев игрового поля. На рисунке ниже указана эта ситуация. Запутанная змея не может двигаться, а ее хвост открыт и доступен каждому проползающему мимо. Старайтесь сделать так, чтобы ваша змея не подползала близко к краям поля, когда там нельзя поживиться хвостами.
 

rules-pic-1.png

3. Змея должна научится выползать из чужих и собственных колец, чтобы не запутаться и застрять.

rules-pic-2.png

4. Змея должна научиться менять траекторию движения при зацикленном круговом преследовании, когда две змеи постоянно по кругу ползут за хвостами друг друга. Но желательно не просто выходить, а срезать углы, тем самым уменьшать расстояние до врага.

rules-pic-3.png

5. Змея должна научится убегать, когда при зацикленном круговом преследовании змеи уже поедают хвосты друг друга. Убегающая змея не теряет свои квадраты и будет иметь шанс напасть снова позже. Схема поведения на подобный маневр должна идти раньше схемы с правилами погони и поедания.

rules-pic-4.png

Поведение ваша змея может быть очень разнообразным. Смотрите за поведением соперников, изучайте ошибки вашего питомца.

Бои с участием двух, трех или четырех змей проходят по-разному. Некоторые змеи побеждают в схватках 1х1, некоторые только в командных боях. Сила змеи - понятие относительное. Результат качества поведения той или иной змеи зависит от того, в каких условиях она сражается. Поэтому воспитание "универсального" бойца – это дело, связанное с чувством баланса и многими компромиссами.

Обратите внимание на то, что, если Змея1 часто побеждает Змею2, а Змея2 часто побеждает Змею3 – это не значит, что Змея1 также часто будет побеждать Змею3.

Тренируя несколько дней своих змей, вы сами это заметите, а обучение универсального война станет делом подробного исследования и подбором баланса разных качеств и свойств.

 

Как учить змею

Составление схем поведения змеи делается очень наглядно и просто. В голове у каждой змеи есть девять программируемых схем поведения. Схема 1 имеет более высокий приоритет, чем схема 2 и т.д. То есть, если змея исполняет программу, записанную в первой схеме, то до остальных она не дойдет. Если же реальная обстановка не соответствует программе, записанной в схему 1, то может быть использована схема 2 и т.д.

 

schemes.png

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

editor.png

 

Основой логики поведения змеи является её голова. Эта голова должна быть на каждой схеме поведения в единственном экземпляре. Положение головы можно указать произвольное. Таким образом радиус сканирования поля - 6 клеток.

Голова змеи на схеме всегда смотрит вверх.

При расчете следующего шага змеи поочередно просматриваются все схемы поведения. Они накладываются так, чтобы голова змеи на игровом поле совпала с ее положением на схеме поведения. И если поле вокруг головы совпало с тем, что занесено в схему, то змея ползет в направлении соответственно схеме. Если совпадения нет или подобный ход невозможен, то изучаются все повороты и зеркальные отражения данной схемы. Если совпадения все равно не произошло, то берется следующая схема и процедура запускается снова. Если же все схемы не дала результат, то направление следующего хода выбирается случайно.

На иллюстрации выше изображена схема в режиме редактирования. Справа набор инструментов. Вначале идут элементы, встречающиеся на игровом поле. Символ "Стена" означает квадраты, которые находятся за пределами поля, т.е. игрок может создать змею, любящую прижиматься к границам поля, или же уползающую от них.

Незанятый квадрат схемы, просто пустой белый квадрат означает, что данный квадрат не принимается во внимание.

Далее идет группа «И». Это стандартный режим редактирования схемы. При переносе элементов на схему в этом режиме их фон остается белым. При формировании поведения змеи все элементы этой группы должны совпасть с игровым полем вокруг своей головы.

Следующий элемент - "Исключить" означает, что элемент считается совпавшим, если он любой, кроме указанного в соответствующем квадрате.

Затем следуют группы "ИЛИ". Для элементов, раскрашенных в один и тот же "ИЛИ" цвет, совпадение фиксируется, если совпал хотя бы один из них. Например, схема 1 заставляет змею избегать краев игрового поля, а схема 2 - двигаться в направлении хвоста змеи соперника.

or1.pngor2.png

Каждый игрок имеет в своем распоряжении два таких "ИЛИ" цвета (зеленый и синий). Совместное использование данных цветов говорит о том, что требуется совпадение хотя бы по одному элементу из каждой группы.

Нужно помнить, что повороты и отражения дают одну и ту же схему, например, следующие схемы идентичны.

. m1.pngm2.png

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

Если игрок укажет в какой-то схеме расположение хвоста и тела змеи соперника (как, например, на схеме ниже), то возможна ситуация, при которой будет определено совпадение, но хвост будет принадлежать одной змее, а тело - другой.

r1.pngr2.png

Наличие групп «ИЛИ» позволяет задавать сложные условия поведения змеи и экономить схемы.

Например, указанная ниже схема сочетает две, движение за хвостом и уход от стен.

or3.png

Но нужно понимать, что может отработать не та группа, которую хотелось бы в той или другой конкретной ситуации.

Элемент «Любой элемент» удаляет содержимое квадрата, сообщая системе, что в этом месте может быть любой элемент. Равносильно одинарному клику по заполненной клетке схемы.

 

Некоторые возможные ситуации

Ниже показаны некоторые игровые ситуации, чаще всего встречающиеся в процессе игры.

rules-pic-6.png

Изображена запутавшаяся и заблокировавшая сама себя змея. Если такая ситуация возникнет в ходе игры, то любой противник сможет быстро и беспрепятственно съесть всею змею.

Обученная змея должна избегать подобных ситуаций.

rules-pic-7.png

Изображен клубок змей. Очень часто игра заканчивается с подобным результатом.

rules-pic-8.png

Тоже не редкая ситуация. Три змеи ползут за хвостами друг друга. В результате ходов каждой из змей, змеи приобретают и теряют одну клетку, т.е. длина каждой змеи остается неизменной. Подобная ситуация также часто возникает и с двумя змеями.

rules-pic-9.png

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