Искусственный интеллект. В дополнение к основной цели работы выделяем следующие задачи
Скачать 1.7 Mb.
|
2.1.2 Правила игры Игра разделена на ходы. Каждый ход состоит из двух полу-ходов для каждого из игроков. Во время полу-хода игрок делает выбор, отдавая приказания о выпуске новых флотилий, указывая планеты отправителя, планету назначения (приёмник) и количество кораблей в каждой флотилии. Планетами отправителя могут быть только свои планеты, а количество кораблей в отправляемой флотилии не должно превышать количество имеющихся на планете. В момент отправки флотилии количество кораблей на планете уменьшается на столько, сколько их во флотилии. Когда флотилия достигает места назначения, она исчезает, изменяя статус для планеты приёмника. Это изменение зависит от сопренадлежности флотилии и планеты приёмника к игрокам. Могут произойти следующие варианты: Если флотилия прилетела на свою же планету, то корабли флотилии добавляются к кораблям на планете. Если флотилия прилетела на планету противника, то корабли мину- суются, и на планете остаётся разница. В случае, если кораблей больше во флотилии, то планета меняет хозяина на того, чья флотилия это была. Если на планету в один ход прилетает сразу несколько флотилий разных принадлежностей, то работают более сложные правила, которые можно найти на сайте соревнования (PlanetWarsSpec). Цель игры - захватить как можно больше планет за максимум 200 ходов. На каждый ход игроку даётся одна секунда. Игра заканчивается или по истечению одного из лимитов, или если у одного из игроков закончатся корабли (как на планетах, так и во флотилиях). 2.1.3 Технические данные Во время игры обмен информацией о состоянии игры и выборах игроков в игровом движке происходит следующим образом (рис.6) Рис. 6 - Процесс работы игрового движка На рисунке 6 видно, что в начале игры читается файл с описанием начальной карты, которая составляет начальное состояние игры. Это состояние передаётся первому игроку, который делает свой выбор и отдаёт назад приказы об отправлении новых флотилий, после чего всё тоже самое повторяется для второго игрока. Далее движок обрабатывает полученные выборы, применяя их к текущему состоянию игры, а так же он делает передвижение уже имеющихся флотилий, происходит прирост кораблей на планетах и обработка прибытий флотилий на планеты. После чего он проверяет терминальное состояние, т.е. не закончена ли игра. Перед началом игры движок запускает программы игроков в отдельных процессах и устанавливает с ними связь через стандарт ввода-вывода, впоследствии общаясь по ним с процессами ботов, передовая состояния и зачитывая выборы игроков. |