Пропустить до содержимого

Как использовать Wordle на Python?

[

Создание клонера игры Wordle с использованием Python и библиотеки Rich

by Geir Arne Hjelle

Демонстрация: Ваш собственный клон игры Wordle на Python

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

Оригинальный Wordle был приобретен The New York Times в начале 2022 года, и теперь вы можете играть в эту игру на их веб-сайте. В этом проекте мы не будем создавать социальный аспект игры.

Обзор проекта

В этом уроке вы будете создавать собственный клон игры Wordle для использования в терминале. Вы начнете с небольшого прототипа игры и постепенно развивать его в стабильное приложение. В процессе разработки вы научитесь настраивать командную строку, валидировать ввод пользователя, создавать привлекательный пользовательский интерфейс с помощью библиотеки Rich, организовывать свой код в функции и предоставлять пользователям информативную обратную связь.

Предварительные требования

Для создания клонера игры Wordle вам потребуется установленный на вашем компьютере Python и библиотека Rich. Если у вас еще не установлен Python, вы можете загрузить его с официального сайта Python и следовать инструкциям по установке. Для установки библиотеки Rich вы можете использовать менеджер пакетов pip следующей командой:

Terminal window
pip install rich

Шаг 1: Угадайте слово

Первый шаг в создании клонера Wordle - позволить пользователю угадывать секретное слово. В этом шаге вы будете получать информацию от пользователя с помощью функции input(), использовать циклы для избегания повторного кода и проверять, содержатся ли буквы в слове с помощью множеств.

Получение информации от пользователя с помощью input()

Для получения ввода от пользователя вам понадобится функция input(). Она позволяет пользователю вводить текст, который будет сохранен в переменной. Например:

guess = input("Введите слово: ")

Использование циклов для избегания повторного кода

Чтобы избежать повторения кода при проверке каждой буквы в слове, можно использовать циклы. Например, вы можете использовать цикл for для проверки каждой буквы в слове. Вот пример кода:

word = "apple"
for letter in word:
if letter in guess:
print(f"{letter} находится в загаданном слове.")
else:
print(f"{letter} не находится в загаданном слове.")

Проверка букв с помощью множеств

Чтобы проверить, содержит ли слово загаданную букву, вы можете использовать множества. Множество - это структура данных, которая содержит уникальные элементы и позволяет эффективно выполнять операции, такие как проверка на наличие элемента. Вот пример кода:

word_set = set(word)
guess_set = set(guess)
common_letters = word_set & guess_set
for letter in common_letters:
print(f"{letter} находится в загаданном слове.")

Шаг 2: Использование списка слов

Второй шаг в создании клонера Wordle - использование списка слов. В этом шаге вы будете создавать список слов, выбирать случайное слово из списка и преобразовывать текст в список слов.

Создание списка слов вручную

Для создания списка слов вручную вы можете использовать следующий код:

word_list = ["apple", "banana", "cherry", "grape", "orange"]

Выбор случайного слова из списка

Чтобы выбрать случайное слово из списка, вы можете использовать функцию random.choice(). Она позволяет вам выбрать случайный элемент из списка. Вот пример кода:

import random
random_word = random.choice(word_list)

Преобразование текста в список слов

Если у вас есть текст и вы хотите преобразовать его в список слов, вы можете использовать метод split(). Этот метод разделит текст на отдельные слова и создаст список из них. Например:

text = "Hello, world! This is a text."
word_list = text.split()

Шаг 3: Организация кода с использованием функций

В третьем шаге вы будете организовывать свой код с помощью функций. Функции помогают разделить код на более мелкие блоки, что делает его более читаемым и легко поддерживаемым. Вот несколько полезных функций, которые вы можете создать:

Настройка главного цикла

Функция main_loop() будет являться главным циклом вашей игры. Она будет запускать игру и перезапускать ее по запросу пользователя. Пример кода:

def main_loop():
while True:
play_game()
if not play_again():
break

Создание вспомогательных функций

Вы также можете создать несколько вспомогательных функций, которые помогут вам управлять игрой. Например, функция play_game() будет отвечать за процесс игры, а функция play_again() будет спрашивать пользователя, хочет ли он сыграть в игру еще раз. Вот примеры кода:

def play_game():
# Код для игры
def play_again():
response = input("Хотите сыграть еще раз? (y/n) ")
return response.lower() == "y"

Тестирование вашего кода

Добавление функции test_code() в ваш код поможет вам в тестировании и отладке. Вы можете использовать эту функцию для проверки работы отдельных частей вашего кода. Пример кода:

def test_code():
# Код для тестирования

Шаг 4: Украшение игры с помощью библиотеки Rich

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

Знакомство с консольным принтером Rich

Для начала вы можете использовать функцию Console().richprint() из библиотеки Rich для форматирования текста. Эта функция принимает текст и применяет стили к нему. Вот пример кода:

from rich.console import Console
console = Console()
console.print("Привет, мир!", style="bold cyan")

Отслеживание предыдущих попыток и окрашивание их

Чтобы отслеживать предыдущие попытки пользователя и окрашивать их в разные цвета, вы можете использовать метод AnsiText().apply_markup() из библиотеки Rich. Он позволяет вам применять разные стили и цвета к тексту. Пример кода:

from rich.text import AnsiText
attempts = ["apple", "orange", "grape"]
formatted_attempts = ", ".join([AnsiText(attempt).apply_markup(f"yellow on {attempt[0]}") for attempt in attempts])
console.print("Предыдущие попытки: ", formatted_attempts)

Завершение игры со стилем

Чтобы завершить игру со стилем, вы можете использовать метод wrap() из класса Console. Он создает окно с указанным стилем и выводит текст внутри него. Вот пример кода:

console = Console()
with console.wrap("bold red"):
console.print("Игра завершена. Спасибо за игру!")

Шаг 5: Добавление проверки и обратной связи от пользователя

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

Убедитесь, что список слов не пуст

Для проверки, что список слов не пуст, вы можете использовать условный оператор if. Например:

if not word_list:
console.print("Список слов пуст!")
return

Подумайте о том, какие слова принимать

Прежде чем принять слово, пользователь будет угадывать, вы можете проверить, содержится ли оно в списке слов. Вы можете использовать условный оператор if для этой проверки. Например:

if guess not in word_list:
console.print("Такого слова нет в списке!")
return

Проверьте правильность слов, которые угадывает пользователь

Также вы можете проверить правильность слов, которые пользователь угадывает, и предоставить обратную связь. Например:

if guess == random_word:
console.print("Поздравляю! Вы угадали слово!")
else:
console.print("Увы, это не правильное слово.")

Шаг 6: Очистка игры и кода

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

Использование констант для названия концепций

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

WORD_LENGTH = 5
MAX_ATTEMPTS = 6

Добавление обзора использованных букв

Для отслеживания букв, которые пользователь уже использовал в своих попытках, вы можете создать множество и добавлять буквы после каждой попытки. Например:

used_letters = set()
while True:
guess = get_valid_guess()
# Добавление использованной буквы в множество
used_letters.add(guess)
if guess == random_word:
console.print("Поздравляю! Вы угадали слово!")
break
else:
console.print("Увы, это не правильное слово.")

Чистый выход из игры

Для чистого выхода из игры вы можете использовать оператор exit(). Он завершает выполнение программы, аргумент exit() можно использовать для возвращения целого числа, указывающего на то, была ли игра выиграна или проиграна. Например:

if guess == random_word:
console.print("Поздравляю! Вы угадали слово!")
exit(0)
else:
console.print("Увы, это не правильное слово.")
exit(1)

Заключение

В этом уроке вы узнали, как создать свой собственный клон игры Wordle с использованием Python и библиотеки Rich. Вы познакомились с основными шагами, такими как угадывание слов, использование списка слов, организация кода с помощью функций, оформление игры с помощью Rich, добавление проверки и обратной связи от пользователя, а также очистка игры и кода.

Следующими шагами могут быть добавление дополнительных функций в игру, таких как счетчик попыток, уровни сложности или многопользовательская игра. Возможности развития вашего клонера Wordle ограничены только вашей фантазией.

Удачи в разработке своего собственного клонера игры Wordle!