コンテンツにスキップ

「built wordle」とは?使い方を簡単に解説

[

Pythonを使用してWordleのクローンを作成する

このチュートリアルでは、ターミナル上で動作するWordleのクローンを作成します。Josh Wardleが2021年10月にWordleを発表して以来、数百万人の人々がこのゲームをプレイしています。オリジナルのゲームはWeb上でプレイできますが、ここではコマンドラインアプリケーションとして独自のバージョンを作成し、それを見栄え良くするためにRichライブラリを使用します。

このステップバイステップのプロジェクトで、シンプルなプロトタイプゲームをセットアップしてから、それを徐々に開発して堅牢なアプリケーションにする方法を実践します。

このチュートリアルでは以下のことを学びます:

  • プロトタイプから完成したゲームまでコマンドラインアプリケーションを構築する方法
  • ユーザーの入力を読み取り検証する方法
  • Richのコンソールを使用して、ターミナルで魅力的なユーザーインターフェースを作成する方法
  • コードを関数に整理する方法
  • ユーザーに具体的なフィードバックを提供する方法

Pythonで自分自身のWordleクローンであるWyrdlを作成します。このプロジェクトは、Pythonに慣れてきて、最初からターミナルアプリケーションを構築したい人に向けて作成されています。このチュートリアルでは、ゲームをプレイできる最初からのコードをステップバイステップで構築します。以下のリンクをクリックして、すべてのコードをダウンロードすることができます:

以下で、あなたが作成するものを見てみましょう。

デモ:Python Wordle Clone

Wordleでは、秘密の5文字の単語を推測する6つの試行が与えられます。各予想の後、正しく配置された文字、誤った配置の文字、間違った文字についてフィードバックを受けることができます。

_ニューヨーク・タイムズ_は2022年初めにオリジナルのWordleを購入し、現在ゲームをウェブサイトでプレイできます。このプロジェクトでは再現しない社交的な要素があります。ここでは一つの秘密の単語があります。

以下に、詳細でステップバイステップな実行可能なサンプルコードをできるだけ多く含めます。

プロジェクトの概要

このプロジェクトでは、PythonとRichを使用してターミナル上で動作するWordleクローンを作成します。以下に、プロジェクトの基本的な手順を示します。

ステップ1: 単語を推測する

  • input()を使用してユーザーの情報を取得する
  • 繰り返しコードを避けるためにループを使用する
  • 集合を使用して文字をチェックする

ステップ2: ワードリストを使用する

  • 手動でワードリストを作成する
  • ワードリストからランダムな単語を選ぶ
  • テキストを単語のリストに変換する

ステップ3: コードを関数で整理する

  • メインループを設定する
  • サポート関数を作成する
  • コードをテストする

ステップ4: Richでゲームのスタイルを設定する

  • Richコンソールプリンターを使用する
  • 前回の予想を追跡し、色を付ける
  • ゲームをスタイリッシュに終了する

ステップ5: バリデーションとユーザーフィードバックの追加

  • ワードリストが空でないことを確認する
  • 受け入れる単語を考える
  • ユーザーの予想した単語を検証する

ステップ6: ゲームとコードのクリーンアップ

  • 定数を使用して概念に名前を付ける
  • 使用された文字の概要を追加する
  • ゲームをきれいに終了する

これらの手順を実行すると、PythonとRichを使用してターミナル上で動作するWordleクローンが完成します。このチュートリアルを進めるには、Pythonの基本を理解している必要があります。次のセクションでは、このプロジェクトに必要なプレリクイジットについて説明します。

プレリクイジット

このプロジェクトを進めるには、以下のプレリクイジットが必要です。

  • Python 3.6以上がインストールされていること
  • Richライブラリがインストールされていること

このプロジェクトには、PythonとRichを使用してWordleのクローンを作成します。Pythonの基礎がわかっていれば、このプロジェクトに取り組むことができます。次の手順では、Wordleクローンの作成に必要な各ステップについて詳しく説明します。

ステップ1: 単語を推測する

最初のステップでは、ユーザーに単語を推測させます。以下に、その手順の詳細を示します。

input()を使用してユーザーの情報を取得する

guess = input("Enter your guess: ")

ユーザーに予想した単語を入力させるためにinput()関数を使用します。ユーザーが入力した値はguess変数に保存されます。

ループを使用して繰り返しコードを避ける

for i in range(6):
guess = input("Enter your guess: ")
# 推測した単語をチェックするコード

繰り返しコードを避けるために、forループを使用して6回の予想を行います。

集合を使用して文字をチェックする

target_word = "apple"
guessed_letters = set()
for i in range(6):
guess = input("Enter your guess: ")
# 推測した単語をチェックするコード
guessed_letters.add(guess)

集合を使用して、推測した文字を追跡します。set()関数を使用して空の集合を作成し、add()メソッドを使用して推測した文字を集合に追加します。

これで、単語を推測するステップが完成しました。次のステップでは、ワードリストを使用してゲームを拡張します。

ステップ2: ワードリストを使用する

次のステップでは、ワードリストを使用してゲームを拡張します。以下に、その手順の詳細を示します。

手動でワードリストを作成する

word_list = ["apple", "banana", "cherry", "durian", "elderberry"]

手動でワードリストを作成します。この例では、5つの単語を含むリストを作成しました。

ワードリストからランダムな単語を選ぶ

import random
target_word = random.choice(word_list)

random.choice()関数を使用してワードリストからランダムな単語を選びます。randomモジュールをインポートしてから、random.choice()関数を使用します。

テキストを単語のリストに変換する

text = "apple banana cherry"
word_list = text.split()

テキストを単語のリストに変換するには、split()メソッドを使用します。このメソッドは、テキストをスペースで区切り、単語のリストに分割します。

これで、ワードリストを使用するステップが完成しました。次のステップでは、コードを関数で整理します。

ステップ3: コードを関数で整理する

このステップでは、コードを関数に整理して、メインのループとサポート関数を作成します。以下に、その手順の詳細を示します。

メインループを設定する

def main_loop():
for i in range(6):
guess = input("Enter your guess: ")
# 推測した単語をチェックするコード
if __name__ == "__main__":
main_loop()

main_loop()関数を作成して、メインのループを設定します。forループの中にユーザーの予想を入れます。また、if __name__ == "__main__":のブロックを使用して、スクリプトを直接実行するための条件を追加します。

サポート関数を作成する

def check_guess(guess, target_word):
# 推測した単語をチェックするコード
def print_result(correct_letters, misplaced_letters, wrong_letters):
# 結果を出力するコード

check_guess()関数とprint_result()関数を作成します。check_guess()関数では、推測した単語をチェックし、print_result()関数では結果を出力します。

コードをテストする

if __name__ == "__main__":
main_loop()

テストのために、スクリプトを直接実行します。if __name__ == "__main__":のブロックを使用してmain_loop()関数を呼び出します。

これで、コードを関数で整理するステップが完成しました。次のステップでは、ゲームのスタイルをRichで設定します。

ステップ4: Richでゲームのスタイルを設定する

このステップでは、Richを使用してゲームのスタイルを設定します。以下に、その手順の詳細を示します。

Richコンソールプリンターを使用する

from rich.console import Console
console = Console()

rich.consoleモジュールからConsoleクラスをインポートし、consoleオブジェクトを作成します。

前回の予想を追跡し、色を付ける

correct_letters = set()
misplaced_letters = set()
wrong_letters = set()
for i in range(6):
guess = input("Enter your guess: ")
# 推測した単語をチェックするコード
# 実際の推測結果を記録するコード
# Richを使用して結果を出力するコード

前回の予想の結果を追跡するために、集合を使用します。correct_lettersmisplaced_letterswrong_lettersという3つの集合を作成し、適切な集合に推測した文字を追加します。

ゲームをスタイリッシュに終了する

if i == 5:
console.print("Game over!", style="bold underline")
console.print(f"The word was [green]{target_word}[/green]", style="bold")

最後の予想の後、ゲームが終了することをユーザーに表示します。console.print()関数を使用してメッセージを出力し、テキストスタイルを適用します。

これで、ゲームのスタイルを設定するステップが完成しました。次のステップでは、バリデーションとユーザーフィードバックを追加します。

ステップ5: バリデーションとユーザーフィードバックの追加

このステップでは、ワードリストが空でないことのバリデーションと、ユーザーの予想した単語を検証します。以下に、その手順の詳細を示します。

ワードリストが空でないことを確認する

if not word_list:
console.print("Error: Word list is empty", style="bold")
return

ワードリストが空でないことを確認するために、ifステートメントを使用します。ワードリストが空の場合、エラーメッセージを出力し、関数を終了します。

受け入れる単語を考える

if len(guess) != 5:
console.print("Error: Guess must be a five-letter word", style="bold")
continue

ユーザーの予測した単語が受け入れられるものかを確認するために、ifステートメントを使用します。予測した単語の長さが5文字でない場合、エラーメッセージを出力し、次のループに進みます。

ユーザーの予想した単語を検証する

correct_letters = set()
misplaced_letters = set()
wrong_letters = set()
for letter in guess:
if letter in target_word:
if guess.count(letter) == target_word.count(letter):
correct_letters.add(letter)
else:
misplaced_letters.add(letter)
else:
wrong_letters.add(letter)

ユーザーの予測した単語をチェックし、正しい場所にある文字、誤った場所にある文字、間違った文字にそれぞれ分類します。ifステートメントを使用して文字をチェックし、適切な集合に追加します。

これで、バリデーションとユーザーフィードバックを追加するステップが完成しました。次のステップでは、ゲームとコードをクリーンアップします。

ステップ6: ゲームとコードをクリーンアップする

このステップでは、ゲームとコードをクリーンアップして整理します。以下に、その手順の詳細を示します。

定数を使用して概念に名前を付ける

MAX_ATTEMPTS = 6
WORD_LENGTH = 5

定数を使用して、マジックナンバーを置き換え、コード内の概念に意味を持たせます。MAX_ATTEMPTSはユーザーが持つ試行回数の最大値を表し、WORD_LENGTHは予測する単語の長さを表します。

使用された文字の概要を追加する

console.print(f"Used letters: {[letter for letter in guessed_letters]}")

使用された文字の概要をユーザーに表示します。console.print()関数を使用してメッセージを出力し、リスト内包表記を使用して使用された文字を表示します。

ゲームをきれいに終了する

console.print("Game over!", style="bold underline")
console.print(f"The word was [green]{target_word}[/green]", style="bold")

ゲームの最後に、ゲームが終了したことと正解の単語をユーザーに表示します。テキストスタイルを適用するためにconsole.print()関数を使用します。

これで、ゲームとコードをクリーンアップするステップが完成しました。最後に、結論と次のステップに進みましょう。

結論

このチュートリアルでは、PythonとRichを使用してターミナル上で動作するWordleのクローンを作成しました。プロトタイプから始めて、徐々にアプリケーションを開発しました。Pythonの基礎を理解していれば、このプロジェクトに取り組むことができます。

次のステップとして、実際のコードをダウンロードして、WordleのクローンをPythonとRichで作成する準備が整いました。楽しんでプログラミングをして、あなた自身のWordleゲームを作り上げてください。

以上が、PythonとRichを使用してWordleのクローンを作成するチュートリアルの詳細です。このチュートリアルには詳細なステップバイステップのサンプルコードが含まれています。

続きは、実際のチュートリアルをご覧ください。