Ваша любимая игра в вашем терминале!

Я играл в Wordle один раз до сих пор. Но, как и многие, я уже много слышал об этом. Поэтому я подумал, что было бы интересно попробовать воссоздать простую консольную версию игры. Исключительно для того, чтобы отточить свои навыки Python.

Поскольку я хочу сосредоточиться на логике игры, я не буду создавать причудливую версию графического интерфейса с помощью JavaScript, а вместо этого просто раскрашу некоторые буквы в терминале, чтобы имитировать визуальные эффекты. Приступаем к кодированию!

Примечание. Я разрабатываю это для развлечения, поэтому код, скорее всего, не будет оптимальным.

Введение в игру

Я думаю, вы уже знаете, что такое Wordle, и если вы знаете, вы можете перейти к следующему абзацу, чтобы перейти к коду. Но если вы не беспокоитесь. Для любого голландца Wordle очень близок к телепрограмме «Lingo». Для всех остальных вот инструкция к игре:

Вы начинаете игру, угадывая слово из 5 букв. Когда любая из этих букв совпадает с буквой слова, которое вы должны найти, эти буквы станут желтыми. Если они также совпадают с позицией (например, последняя буква «с» в словах «логика» и «циник»), буква станет красной (как на скриншоте выше!)

Если вы угадываете последнее слово за 6 попыток, вы выигрываете, в противном случае — проигрываете. Реализовать что-то подобное кажется простым, так что давайте попробуем.

Цикл игры

Игра, как и почти любая другая игра, начнет свое развитие с игрового цикла. Это будет цикл while loop == true:, где loop изменится на false только тогда, когда мы выйдем из игры. Кроме того, вы можете запустить цикл только тогда, когда начинается настоящая игра, а не внутри меню.

Мы также добавили быстрые print и input, чтобы мы могли выйти из игры, когда захотим. Так как всегда полезно предотвратить бесконечные циклы.

Далее, давайте создадим цикл для реальной игры, мы просто создадим новый цикл, который получает ввод 6 раз, а затем завершает работу.

Теперь, когда у нас есть базовый, но, возможно, последний игровой цикл, мы можем перейти к остальной части игры, самой интересной части. Но сначала нам нужно посмотреть, как получить желтый и красный фон.

Цветной текст консоли

Большой частью игры является цветной текст, и поскольку не все могут знать, как это сделать, я выделил его в отдельный абзац. Есть несколько способов сделать это, в зависимости от используемой ОС. Я использую Windows и буду использовать библиотеку Python Colorama для своих цветов.

pip install colorama

И чтобы немного продемонстрировать это, прежде чем мы перейдем к логике игры, я распечатаю наше простое «меню» с помощью нескольких строк Colorama, чтобы сделать его немного красивее.

Теперь мы можем, наконец, перейти к игровой логике, которую мы можем поместить в наш новый цикл.

Логика игры

Нам понадобится список возможных слов, которыми может быть последнее слово. Я помещу это в массив вверху файла под определением переменной loop, чтобы оно было доступно везде. Вот мой небольшой набор слов:

Давайте также импортируем модуль random, чтобы иметь доступ к random.choice, чтобы получить случайное значение из этого списка, которое будет нашим словом.

import random

Теперь мы создаем игровую логику внутри нашего вложенного цикла. Мы предлагаем пользователю угадать слово, перебираем каждую букву слова и сверяем их со словом, которое нам нужно угадать. У нас есть два чека: guess[i] in word и quess[i] == word[i] . Во-первых, мы проверяем, находится ли буква в правильном месте, иначе мы проверяем, есть ли она вообще в слове.

Теперь у нас уже есть полурабочая игра Wordle! Нам просто нужно исправить несколько вещей, настроить несколько строк и исправить некоторые ошибки, чтобы сделать его идеальным.

Заканчивать

Вот некоторые предложения, которые вы можете сделать самостоятельно, если хотите улучшить этот фрагмент кода. Осталось выполнить несколько задач:

  • Улучшите стиль (скройте свои слова, чтобы сделать его красивее)
  • Проверьте, состоит ли ввод из 5 букв, в противном случае повторите запрос.
  • Держите счет, пока игра играется.

Конечно, мы можем придумать гораздо больше, например, использовать API для получения слов или создания полноценного визуального опыта для игры. Но у нас логика есть, отсюда вся тонкая настройка.

Заключение

Полный код можно найти здесь

Хотя это не мой обычный контент, было очень весело создавать что-то подобное за такой короткий промежуток времени. Было весело снова работать с Python, и я надеюсь, что это вдохновит вас на создание подобных глупых программ для развлечения.

Большое спасибо за чтение и хорошего дня.

Поддержите меня, поддержав Medium и став участником. Это очень помогает мне, не требует дополнительных затрат, и вы можете читать столько статей на Medium, сколько захотите!

Подписывайтесь на меня в Twitter и gm.xyz, чтобы не отставать от меня.

Посмотрите проект, автором которого я являюсь здесь.

Посмотрите мою последнюю коллекцию NFT на Polygon.