Игры — это одна из форм развлечения, доступная людям. Игры всех видов доступны в Интернете, на мобильных устройствах, на настольных компьютерах и т. д. Сейчас не время создавать одну из этих сложных игр.
Используя Python, мы создадим CLI-игру в крестики-нолики. Давайте используем Python для создания простой игры Tic Tac Toe. Это поможет вам создать игровую логику и научиться организовывать код.
Крестики-нолики
Прежде чем мы начнем программировать, я решил быстро подытожить игру и обсудить свой план ее разработки.
Во-первых, мы установим предположение, что Х всегда проявляют инициативу и ходят первыми, давая пользователю возможность действовать.
С консоли будет введено число от 1 до 9. В сетке, где каждому числу соответствует другое число (вверху слева — 1, внизу справа — 9).
Компьютер автоматически определит и сделает свой ход, как только пользователь переместится. Я буду использовать один основной игровой цикл, который вызывает ряд различных подпрограмм.
Какая функция завершается, вероятно, указано в каждом заголовке этого текстового урока.
Проектирование доски
Мы изобразим нашу доску, используя сетку, как я указывал ранее. Для этого мы создадим список с именем board в Python, и он будет начинаться с 10 пустых значений.
Поскольку пользователь может вводить только числа от 1 до 9, а не от 0 до 8, у нас есть 10 пустых значений, а не 9. Итак, чтобы упростить ситуацию, мы присвоим первой записи нашего списка значение «пустой текст».
Таким образом, мы можем использовать 1–9 вместо 0–8 для индексации записей в нашем списке.
вставить письмо ()
Letter и Pos будут двумя входами для этой функции. Он только поместит запрошенное письмо в запрошенное место.
пространствосвободно (поз.)
Проще говоря, этот метод сообщит нам, свободна ли указанная область. Следовательно, письма там уже нет. Pos, его единственный аргумент, будет целым числом от 1 до 9.
печатная доска (доска)
Доска отправляется в качестве аргумента этому методу, который отображает ее на консоли.
Победитель()
На основе существующей доски эта функция сообщит нам, выиграла ли поставленная буква. Имеет два параметра: le и board (буква).
Это должно быть «Х» или «О». Просто посмотрите, присутствует ли указанная буква на каждой потенциально выигрышной линии на доске.
Основной ()
Когда мы захотим запустить игру, мы вызовем этот метод. Он будет вызывать каждую из многих функций нашей программы и указывать, как программа должна работать.
isBoardFull()
При задании на борту в качестве входных данных этот метод просто вернет True, если доска заполнена, и False в противном случае.
игрокПереместить()
В этом методе мы будем запрашивать перемещение у пользователя и проверять его. Буква будет добавлена на доску, если ход будет законным. Если нет, мы будем продолжать запрашивать отзывы пользователей.
CompMove () — ИИ
Теперь начнется ИИ. Эта функция будет контролировать движение компьютеров. Он оценит доску и выберет лучший ход.
Ниже приведен список алгоритмов, которые мы будем использовать для этого.
- Если текущий шаг не может быть завершен, перейдите к следующему.
- Сделайте выигрышный ход, если сможете.
- Переместитесь в эту позицию на следующий ход, если у игрока есть потенциально выигрышный ход.
- Выберите угол и поверните его. Выбирайте наугад, если есть несколько вариантов.
- Поместите себя в середину.
- Рассмотрим один из ребер. Выбирайте наугад, если есть несколько вариантов.
- Если нет возможности двигаться, игра заканчивается вничью.
выбратьслучайный()
Учитывая список возможных местоположений, эта функция случайным образом выбирает действие, которое необходимо предпринять.
Начало игры
Теперь игру можно начинать, когда мы выполнили все наши задачи. Все, что нам нужно сделать, это вызвать main, если мы просто хотим запустить игру один раз.
Но в нашей ситуации мы хотим, чтобы игра продолжалась до тех пор, пока пользователь не решит, что больше не хочет играть, поэтому мы добавим крошечный цикл while в основную строку.
Полный код
Вот весь код для нашей игры, который теперь завершен.
Результат
Заключение
Ура!
Игра, которую вы сделали полностью с нуля. Это не та игра, в которую мы играем регулярно. Но это помогает в написании логики и поддержании четкой структуры кода.
Удачного кодирования!
Оставьте комментарий