Стратегічна гра.
Гравці ходять по черзі. Для збільшення підконтрольної території гравець повинен будувати фортеці. Фортецю можна встановлювати або на власній ділянці, або на ділянці, суміжній з власною.
Поставити фортецю на місце, де вже встановлено іншу фортецю (свою чи суперника) неможливо. Після встановлення фортеці дана клітинка та всі клітинки суміжні з нею стають вашими незалежно від того, кому вони належали до цього і незважаючи на те, знаходяться на них фортеці суперника чи ні. Виключенням з цього правила є тільки місто – його захопити неможливо.
На ігровому полі також можуть бути ділянки з водоймами та горами. Встановлювати фортеці на цих ділянках заборонено, але їх можна захопити для збільшення підконтрольної території. Для цього потрібно поставити на сусідніх з гірськими або водними ділянками фортеці. Прохід через водні клітинки можливий, а от гори доведеться обходити.
Поле має прямокутну форму. Задається двома натуральними числами 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 на користь зеленого

