Стратегічна гра.
Гравці ходять по черзі. Для збільшення підконтрольної території
гравець повинен будувати фортеці. Фортецю можна встановлювати або на власній
ділянці, або на ділянці, суміжній з власною.
Поставити фортецю на місце, де вже встановлено іншу фортецю
(свою чи суперника) неможливо. Після встановлення фортеці дана клітинка та всі
клітинки суміжні з нею стають вашими незалежно від того, кому вони належали до
цього і незважаючи на те, знаходяться на них фортеці суперника чи ні.
Виключенням з цього правила є тільки місто – його захопити неможливо.
На ігровому полі також можуть бути ділянки з водоймами та
горами. Встановлювати фортеці на цих ділянках заборонено, але їх можна захопити
для збільшення підконтрольної території. Для цього потрібно поставити на
сусідніх з гірськими або водними ділянками фортеці. Прохід через водні клітинки
можливий, а от гори доведеться обходити.
Поле має прямокутну форму. Задається двома натуральними числами
M та N (М - кількість стовпців, N - кількість ділянок у стовпці). На наведеному
малюнку М=7 та N=6. Координати кожної ділянки задаються парою чисел: номер
стовпця та номер ділянки у стовпчику ігрового поля. Початок відліку верхній
лівий кут поля.
Гра може мати три режими, в залежності від яких змінюється набір
об’єктів, що знаходяться на ігровому полі.
Режими гри:
1. “I’m too young to die”. У цьому режимі задаються розміри ігрового поля та координати
міст гравців, та кількість ходів, яку повинен виконати кожен з учасників гри.
Ділянки, що містять водойми та гори, в цьому режимі не передбачаються.
2. “Hey, not too rough!”. У цьому режимі додатково задаються
координати ділянок з горами та водоймами.
3. “Hurt me plenty”. У цьому режимі з’являється додаткові ігрові
персонажі – генерали, за допомогою яких можуть встановлюватися фортеці. Сам
гравець у цьому режимі будувати фортеці не може! Генерали з’являються у місті
на кожному ходу, залишати в місті його не можна. Генерал не може ходити на
ділянки з горами. Йому дозволено висаджуватися на море та повертатись назад на
сушу, але будувати фортеці на воді очевидно неможливо. За один хід він може
виконати одну з таких дій:
a) пересунутися на одну або дві клітинки відносно свого
поточного положення та зупинитися (всі ділянки, якими рухається генерал,
повинні бути суміжними одна до одної);
b) побудувати фортецю на поточній ділянці;
c) пересунутися тільки на одну сусідню ділянку та відразу
побудувати фортецю в тому місці, де він опинився;
Після встановлення фортеці генерал зникає. Зауважимо, що на
ділянку, в якій знаходиться будь-який генерал (свій чи супротивника), інший
генерал стати не може, в той час як на ділянку, що містить фортецю (свою чи
супротивника) інший генерал ходити може. Будувати нові фортеці замість тих, що
стоять на будь-якій ділянці заборонено!
Завдання
1. Реалізувати графічне середовище для гри. Послідовність ходів
обох гравців зчитується з наперед заданого файлу. Програма повинна зчитати
дані, перевірити коректність ходів, зобразити їх на ігровому полі, визначити
переможця.
Формати вхідних даних:
В першому рядку вхідного файлу містяться 4 натуральних числа M,
N, Turns, Mode. (5<N,M <=50, 1<=Turns<=N*M). Де M
– кількість стовпців, N – кількість клітинок в стовпці,
Turns – кількість ходів, Mode – режим гри.
Далі йде рядок з чотирма натуральними числами – координатами
міст гравців.
Якщо Mode>1, то в наступних 2 рядках міститься кількість та
координати клітинок з горами та водою відповідно.
Далі йде 2*Turns рядків з ходами гравців (першим ходить перший
гравець).
У випадку перших двох режимів кожен з ходів задається двома
числами – координатами клітинки куди гравець хоче поставити фортецю.
В третьому режимі хід має наступний формат: спочатку йде номер
генерала (він відповідає номеру хода на якому генерал з’явився), далі йде 1 або
2 цифри, що відповідають можливим командам (0 – пропустити хід, -1 – побудувати
фортецю, 1-6 – походити в сусідню клітинку).
Для прикладу у вас є 2 генерали, що з’явились на другому і
третьому ходу (перший генерал вже побудував фортецю), другим ви хочете походити
двічі вгору, а третім один раз вниз і побудувати фортецю. Тоді хід буде
мати наступний вигляд 2 1 1 3 4 -1
2. Реалізувати можливість гри «гравець-гравець».
3. Реалізувати можливість гри «гравець-комп’ютер».
4. Забезпечити можливість автономної роботи штучного інтелекту
для гри команд учасниць між собою. В межах турніру планується гра програм
команд-учасниць між собою. Детальний опис протоколу взаємодії програм буде
додано пізніше.
5. У 2-4 режимах програма по завершенні має також зберегти файл
із записом гри відповідно до протоколу описаного у завданні 1.
Приклад гри в першому режимі
Дано поле. Воно має 7 стовпчиків, по 6 клітинок в кожному. Місто
першого гравця (фіолетовий) має координати (7;4). Місто другого гравця
(зелений) має координати (1;3). Нехай гра триває 2 ходи. Перший гравець
ставить фортецю у клітинку (5;3), потім другий робить хід (3;3). Перший ходить
(4;3), а другий – (4;2). В кінці у першого гравця залишається 8 клітинок, а у
другого – 13, отже перемога за зеленим.
Приклад гри в другому режимі
Дано поле. Воно має 7 стовпчиків, по 6 клітинок в кожному. Місто
першого гравця (фіолетовий) має координати (7;4). Місто другого гравця
(зелений) має координати (1;3). В клітинках (3;1), (4;1) та (5;1) знаходяться
гори, клітинки (1;5), (1;6), (2;4), (2;5), (2;6), (3;4), (3;5), (4;3), (4;4),
(5;4) – море. Нехай гра триває 3 ходи. Перший гравець ставить фортецю у
клітинку (5;3), потім другий робить хід (3;2). Перший ходить (4;2), а другий –
(3;3), перший - (5;5), другий – (1;4). В результаті в першого гравця 16
клітинок, а в другого - 13. Отже перемога за Фіолетовим.
Приклад гри в третьому режимі
Дано поле. Воно має 7 стовпчиків, по 6 клітинок в кожному. Місто
першого гравця (фіолетовий) має координати (7;4). Місто другого гравця
(зелений) має координати (1;3). Нехай гра триває 3 ходи. Нехай ходи виглядають
наступним чином:
Перший гравець:
1 6 6
Другий гравець:
1 2 3
Перший гравець:
2 5 6
1 5 5
Другий гравець:
1 -1
2 2 2
Перший гравець:
3 6 -1
2 6 -1
1 6 -1
Другий гравець:
3 2 -1
2 3 -1
Рахунок 12-11 на користь зеленого