Ігри – це одна з форм розваги, доступна людям. Ігри всіх видів доступні онлайн, на мобільних пристроях, на настільних комп’ютерах тощо. Зараз не час створювати одну з таких складних ігор.
Використовуючи Python, ми створимо гру CLI в хрестики-нулики. Давайте використаємо Python для створення простої гри Tic Tac Toe. Це допоможе вам створити логіку гри та навчитися організовувати код.
Хрестики-нулики
Перш ніж ми почнемо кодувати, я думав, що я швидко підсумую гру та обговорю свій план щодо її розробки.
По-перше, ми встановимо припущення, що Xs завжди беруть на себе ініціативу та рухаються першими, даючи користувачеві можливість діяти.
З консолі буде введено число від 1 до 9. У сітці, де кожне число відповідає окремому числу (верхній лівий кут — 1, нижній правий — 9).
Комп’ютер автоматично визначить і зробить свій хід, коли користувач рухнеться. Я буду використовувати один основний ігровий цикл, який викликає кілька різноманітних процедур.
Яка функція завершується, можливо, вказано в кожному заголовку цього текстового уроку.
Проектування дошки
Ми зобразимо нашу дошку за допомогою сітки, як я вказав раніше. Для цього ми створимо список під назвою board на Python, і він починатиметься з 10 порожніх значень.
Оскільки користувач може вводити лише числа від 1 до 9, а не від 0 до 8, ми маємо 10 порожніх значень, а не 9. Тому, щоб спростити речі, ми надамо першому запису нашого списку значення «пустий текст».
Таким чином, ми можемо використовувати 1–9 замість 0–8 для індексування записів у нашому списку.
вставитиЛист()
Letter і Pos будуть двома входами для цієї функції. Він лише розмістить запитаний лист у потрібному місці.
spaceIsFree(pos)
Простіше кажучи, цей метод повідомить нам, чи вільна зазначена область. Значить, листа там уже немає. Pos, його єдиний аргумент, буде цілим числом від 1 до 9.
printBoard(дошка)
Дошка надсилається як аргумент цьому методу, який відображає її на консолі.
isWinner()
Базуючись на поточній дошці, ця функція повідомить нам, чи виграв наданий лист. Має два параметри: le і board (буква).
Це має бути «X» або «O». Просто подивіться, чи є зазначена літера на кожному потенційному виграшному рядку на дошці.
main ()
Коли ми хочемо почати гру, ми викличемо цей метод. Він викличе кожну з багатьох функцій нашої програми та вкаже, як програма має працювати.
isBoardFull()
Якщо цей метод надано на борту як вхід, він просто поверне True, якщо дошка заповнена, і False в іншому випадку.
playerMove()
У цьому методі ми будемо запитувати переміщення від користувача та підтверджувати його. Лист буде додано на дошку, якщо хід є законним. Якщо ні, ми продовжуватимемо запитувати відгук користувача.
CompMove() – ШІ
Зараз почнеться ШІ. Рухом комп’ютерів керуватиме ця функція. Він оцінить дошку та вибере найкращий хід.
Нижче наведено список алгоритмів, які ми будемо використовувати для цього.
- Якщо поточний крок не можна завершити, перейдіть до наступного.
- Зробіть переможний хід, якщо можете.
- Перейдіть у цю позицію наступного ходу, якщо гравець має потенційно виграшний хід.
- Виберіть кут і поверніть його. Вибирайте навмання, якщо є кілька варіантів.
- Помістіть себе посередині.
- Розглянемо одне з ребер. Вибирайте навмання, якщо є кілька варіантів.
- Якщо ходу немає, гра закінчується внічию.
selectRandom()
Маючи список потенційних місць, ця функція випадковим чином вибере дію, яку потрібно виконати.
Початок гри
Тепер гру можна починати, коли ми виконали всі наші завдання. Все, що нам потрібно зробити, це викликати main, якщо ми хочемо запустити гру лише один раз.
Але в нашій ситуації ми хочемо, щоб гра продовжувала працювати, доки користувач не вирішить, що більше не хоче грати, тому ми додамо крихітний цикл while до основного рядка.
Повний код
Ось весь код нашої гри, який тепер готовий.
Вихід
Висновок
Ура!
Гра, яку ви створили повністю з нуля. Це не гра, в яку ми граємо регулярно. Але це допомагає в написанні логіки та підтримці чіткої структури коду.
Щасливого кодування!
залишити коментар