Описание

Cоздание боевой змеи.

Создание боевой змеи включает в себя несколько операций:
  • выбор имени змеи (Змеи → Редактировать → Имя змеи)
  • выбор окраски змеи для сражения (Змеи → Редактировать → Цвет змеи)
  • программирование змеи (Змеи → Обучить /Запрограммировать/ )
Также, подробно можно изучить Интерфейс обучения змеи

Сражение змей

Это само сражение, в котором пользователь играет только роль зрителя и, в какой-то мере, судьи.
Бой генерируется автоматически на основе логики змей. Повлиять на исход боя после старта невозможно!

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

Змея может сходить на пустую клетку, съесть хвост противника и стоять в тупике

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

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

Суммарная длина участников остается постоянной.

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

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

Бой заканчивается в случае:
  • когда одна змея уничтожила всех противников;
  • когда ни одна из змей не имеет хода;
  • когда истекло время боя.

Как учить?

Начало

Для того, чтобы попасть на страницу обучения змеи, необходимо перейти по пунктам: Змеи → Обучить /Запрограммировать/ и имеет следующий вид:
Страница делиться на 2 области:
  • Мини-обзор программ
  • Тестирование программ

Мини-обзор программ

Это набор из всех ваших программ в миниатюре, с возможностью сразу просмотреть реакцию змеи.

Каждую программу можно:

  • Поменять местами, задав тем самым приоритет (около каждой программы есть стрелка вверх, программы обрабатываются сверху вниз)
  • Изменить, при этом перейдем на странницу программирования змеи
  • Удалить - избавиться от ненужной программы навсегда!
Также можно создать программу.

Тестирование программ

Для тестирования необходимо разместить элементы на поле:
  • Своя голова
  • Своё тело
  • Своё хвост
  • Голова врага
  • Тело врага
  • Хвост врага
Чтобы разместить элементы, необходимо выбрать объект (один раз щелкнуть мышкой) на палитре, и нажать на нужных клетках поля

Программирование змеи - создание программ

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

Палитра

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

Элементы
  • Собственное тело, хвост
  • Голова, тело, хвост врага
  • Стена, пустое место
Логические операции:
  • Или
  • И
  • Или-2
  • И-2

Логика работает следующим образом:

Если ([блок Или] И [блок И] И [блок Или-2] И [блок И-2]) то программа срабатывает.

Зрение змеи (область которую она видит)

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

Направление

В случае, если представление программы (зрение змеи) соответствует состоянии на поле, то будет выбрано направление, расставленное в приоритетах. В первую очередь змея выберет направление с числом "1", если клетка занята, то с числом "2" и т.д. Пустое значение не обрабатывается.

Чтобы изменить приоритет нажмите на оранжевый квадрат.

Основы программирования

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

Или

Для элементов, раскрашенных в один и тот же цвет Или, совпадение фиксируется, если совпал один из них

И

Его использование требует, чтобы одновременно совпали все элементы из одноцветной группы И.

Чему учить?

Вступление

"Все животные равны, но некоторые из них равнее"
Дж.Оруэлл - "Скотский Хутор"

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

Для того, чтобы Ваша змея вела себя с умом, ее над обучить. Интересно, что обучение змея производится путем программирования логики ее поведения в самых разнообразных боевых ситуациях. Если Вы не умеете программировать, то эта игра для Вас - просто идеал. Дело в том, что "программирование" выполняется таким доступным, понятным и наглядным способом, что через десять минут после начала игры даже семилетний ребенок сможет с гордостью сказать: "Я умею программировать". И совсем приятно, что тут же можно НАГЛЯДНО увидеть, как ведет себя Ваша программа и сравнить ее с программами других авторов.

Особенности программирования:

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

Видим хвост - бежим к хвосту - кушаем хвост

Змея должна видеть хвост противника, начинать преследование, сближаться и атаковать.
Итак, змея должна сканировать окружающее пространство. Чем больше радиус "сканирования" тем интеллектуальнее ее поведение. Ниже приведены несколько вариантов (не единственных) для сканирования пространства на наличие хвостов противника.

Умеем обходить тупик

Змея должна избегать избегать тупиковых ситуаций вблизи кромки поля.
Пример такой ситуации изображена на рисунке. Хвост такой змеи беззащитен для атак соперников.

Избегаем путаницы в своем теле

Умная змея может избегать ситуации, когда она запутывается в собственных (и не только собственных) кольцах

Срезаем в погонях за хвостом

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

Разрываем хоровод

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