Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шепель МАН+.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
550.96 Кб
Скачать

Розділ 3. Алгоритм гри хрестики-нулики

Розглянемо алгоритми, які приводять до виграшу при грі за хрестики і за нулики.

Перший хід хрестиків. Найвигіднішою позицією є середина ігрового поля, або як зазначено на схемі клітина №5. Саме сюди слід вписувати вашу фігуру, якщо ця клітинка є вільною, і саме тому хрестики, які починають, завжди мають перевагу. Через центральну клітинку ви можете побудувати найбільшу кількість можливих варіантів виграшу: дві діагоналі, одну горизонталь і одну вертикаль.

   Після того як ви зробили перший хід, поставивши хрестик по центру, вам залишається чекати хід супротивника. В цілому, у нього є всього 2 можливих варіанти дій: поставити нулик в одній з «кутових» клітинок (№1, №3, №7 та №9) або помістити свою фігуру в клітинку №2, №4, №6 або №8. І слід відразу зазначити, що від цього ходу вже суттєво залежить ваша можливість перемогти.

Якщо гравець вибирає одну з недіагональних клітинок №2, №4, №6 або №8, то у вас з'являється безпрограшна стратегія. Іншими словами ви зможете перемогти з імовірністю 100%.

Рис. 3.1. Поле гри

Якщо ж ваш суперник своїм першим ходом вибирає клітинку №1, №3, №7 та №9, тоді ви не маєте абсолютної виграшної стратегії, і вам слід сподіватися лише на подальшу неуважність другого гравця, що в такій простій грі буває досить рідко.

Третій і наступні ходи хрестиків. Подальші ходи «хрестиків» повинні бути спрямовані на побудову в ряд 3-х власних фігур, а також на припинення малоймовірних, але все-таки можливих спроб «нуликів» поставити підряд 3 фігури.

Якщо вам випало грати нуликами, то в більшості випадків вам доведеться боротися тільки за нічию. Однак у вас є шанси перемогти, якщо ви граєте з зовсім недосвідченим гравцем.

Перший хід нуликів. Якщо гравець №1 чомусь не зайняв центральну клітку - сміливо ставте туди нулик і дійте далі, спираючись на стратегію хрестиків, описану вище. Але, швидше за все, центральна клітинка до моменту вашого початкового ходу буде вже зайнята. У цьому випадку не робіть непрощенну помилку і не ставте нулик в клітинку №2, №4, №6 або №8, а вибирайте тільки діагональні клітинку №1, №3, №7 та №9.

Другий і наступні ходи. Подальші ходи «нуликів» повинні бути спрямовані на припинення спроб «хрестиків» поставити підряд 3 фігури, а також при можливості, на побудову в ряд 3-х нуликів, що є практично неможливим.

Рис. 3.2. Схема виграшних стратегій гри хрестики-нулики

Розділ 4. Етапи розробки гри

Стрімкий розвиток комп'ютерної техніки в останні роки, поява найпотужніших графічних прискорювачів і центральних процесорів сприяло не менш бурхливого розвитку індустрії комп'ютерних ігор. Видатні розробки цієї галузі – це найскладніші програми, як правило, з дуже високими вимогами до апаратної частини комп'ютера. Однак для можливості відпочити в перерві від виконання якоїсь роботи оператору комп'ютера не завжди потрібно новітня комп'ютерна гра, а часто використовувати її не дозволяє малопотужне обладнання офісного комп'ютера. Саме цій меті – відпочинку від монотонної роботи служить розроблена в рамках даного проекту програма.

Кожна гра використовує будь-якої алгоритм – набір правил чи стратегію, яка застосовується в залежності від дій гравця. Алгоритми для однієї і тієї ж гри можуть бути простими або дуже складними. Коли ви чуєте, що чемпіон світу з шахів Магнус Карлсен грає проти комп'ютера, насправді він грає проти програми. Цілі команди експертів намагаються винайти витончені алгоритми, щоб обіграти його. Гра хрестики-нулики також може бути запрограмована за допомогою різних стратегій, ну а ми використовуємо найпростішу:

У нас буде дошка розміром 3×3. Людина буде грати хрестиками, а комп'ютер буде грати нуликами. Щоб перемогти, треба повністю заповнити рядок, колонку або діагональ поля однаковими символами.

Після кожного ходу програма повинна перевіряти, чи є переможець. Якщо є переможець, то виграшна комбінація повинна виділятися іншим кольором і гра повинна закінчуватися.

Гра також повинна закінчуватися, якщо більше не залишилося вільних клітин. Щоб почати нову гру, людина повинна натиснути кнопку "Нова гра".

Для створення програми будемо використовувати популярне середовище Eclipse. На рис. 1 показано вигляд Eclise в процесі роботи над проектом.

Рис.4.1. Середовище розробки Eclipse

Наш аплет буде використовувати схему розташування компонентів BorderLayout, у верхній частині вікна буде раположена кнопка " Нова гра ".

Всі компоненти вікна будуть створюватися в методі аплету init ().

ActionListener в методі actionPerformed ().

Метод lookForWinner() буде викликатися після кожного ходу, щоб

останні три правила нашої стратегії запрограмовані в методі цей рядок робить програму коротше, тому що в ній виробляються такі ж дії, які могли бути зроблені в наступних рядках:

String label1 = squares [1]. GetLabel ();

if (label0.equals (label1)) {...}

Java обчислює вираз у дужках, перш ніж виконувати будь-які інші обчислення. Коротка версія цього тексту програми спочатку отримує результат вирази в дужках, і відразу ж використовує його як аргумент для методу equals(), який застосовується для результату першого виклику getLabel(). Хоча текст програми ігри займає кілька сторінок, він не є складним для розуміння.

На рис 4.2-4.6 подано вигляд вікна гри на різних етапах

Рис. 4.2. Інтерфес програми – початок гри

Рис. 4.3. Інтерфес програми – процес гри

Рис. 4.4. Інтерфес програми – нічия

Рис. 4.5. Інтерфес програми – програш

Рис. 4.6. Інтерфес програми – виграш