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

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

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

screenrecorderproject19.gif

 

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

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

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

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

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

Если указанное положение элементов схемы вокруг своей головы совпадает с элементами игрового поля, то схема считается совпавшей и змее придается соответствуещее направление движения.

Существует 3 группы И и 2 группы ИЛИ для элементов. Для удобства, каждая группа имеет свой цвет.

По умолчанию используется первая группа И с белым цветом фона. Использование группы И требует, чтобы одновременно совпали все элементы одного соответствующего цвета.

При использовании групп ИЛИ должен совпасть хотя бы один элемент из группы.

Например, схема 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

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