Wordle adalah gim populer yang mengharuskan Anda menebak kata lima huruf dalam enam kali percobaan. Setelah setiap tebakan, warna ubin akan berubah untuk menunjukkan seberapa dekat tebakan Anda dengan kata tersebut
Ini mirip dengan game Hangman yang sudah saya tunjukkan cara membuatnya menggunakan Python
Dalam tutorial ini, kita akan membuat versi terminal kita sendiri dari game populer Wordle menggunakan Python dan Rich, sebuah pustaka untuk pemformatan teks kaya
Jika Anda baru mengenal Rich, lihat tutorial ini untuk memulainya. Pastikan Anda telah menginstal Rich sebelum mulai mengikuti di sini
Demo Proyek
Mari kita lihat seperti apa pertandingan terakhir kita
Ayo Kode Game Wordle Kita
Seperti game Wordle asli, kata lima huruf acak dipilih setiap hari. Untuk melakukan ini, kami akan memilih kata acak dari daftar kata lima huruf
Jadi, pertama-tama, mari kita tentukan daftar kata yang disebut word_list dalam file words.py terpisah
word_list = ['ABOUT', 'ABOVE', 'ABUSE', 'ACTOR', 'ACUTE', 'ADMIT', 'ADOPT', 'ADULT', 'AFTER', 'AGAIN', 'AGENT', 'AGREE', 'AHEAD', 'ALARM', 'ALBUM', 'ALERT', 'ALIKE', 'ALIVE', 'ALLOW', 'ALONE', 'ALONG', 'ALTER', 'AMONG', 'ANGER', 'ANGLE', 'ANGRY', 'APART', 'APPLE', 'APPLY', 'ARENA', 'ARGUE', 'ARISE', 'ARRAY', 'ASIDE', 'ASSET', 'AUDIO', 'AUDIT', 'AVOID', 'AWARD', 'AWARE', 'BADLY', 'BAKER', 'BASES', 'BASIC', 'BASIS', 'BEACH', 'BEGAN', 'BEGIN', 'BEGUN', 'BEING', 'BELOW', 'BENCH', 'BILLY', 'BIRTH', 'BLACK', 'BLAME', 'BLIND', 'BLOCK', 'BLOOD', 'BOARD', 'BOOST', 'BOOTH', 'BOUND', 'BRAIN', 'BRAND', 'BREAD', 'BREAK', 'BREED', 'BRIEF', 'BRING', 'BROAD', 'BROKE', 'BROWN', 'BUILD', 'BUILT', 'BUYER', 'CABLE', 'CALIF', 'CARRY', 'CATCH', 'CAUSE', 'CHAIN', 'CHAIR', 'CHART', 'CHASE', 'CHEAP', 'CHECK', 'CHEST', 'CHIEF', 'CHILD', 'CHINA', 'CHOSE', 'CIVIL', 'CLAIM', 'CLASS', 'CLEAN', 'CLEAR', 'CLICK', 'CLOCK', 'CLOSE', 'COACH', 'COAST', 'COULD', 'COUNT', 'COURT', 'COVER', 'CRAFT', 'CRASH', 'CREAM', 'CRIME', 'CROSS', 'CROWD', 'CROWN', 'CURVE', 'CYCLE', 'DAILY', 'DANCE', 'DATED', 'DEALT', 'DEATH', 'DEBUT', 'DELAY', 'DEPTH', 'DOING', 'DOUBT', 'DOZEN', 'DRAFT', 'DRAMA', 'DRAWN', 'DREAM', 'DRESS', 'DRILL', 'DRINK', 'DRIVE', 'DROVE', 'DYING', 'EAGER', 'EARLY', 'EARTH', 'EIGHT', 'ELITE', 'EMPTY', 'ENEMY', 'ENJOY', 'ENTER', 'ENTRY', 'EQUAL', 'ERROR', 'EVENT', 'EVERY', 'EXACT', 'EXIST', 'EXTRA', 'FAITH', 'FALSE', 'FAULT', 'FIBER', 'FIELD', 'FIFTH', 'FIFTY', 'FIGHT', 'FINAL', 'FIRST', 'FIXED', 'FLASH', 'FLEET', 'FLOOR', 'FLUID', 'FOCUS', 'FORCE', 'FORTH', 'FORTY', 'FORUM', 'FOUND', 'FRAME', 'FRANK', 'FRAUD', 'FRESH', 'FRONT', 'FRUIT', 'FULLY', 'FUNNY', 'GIANT', 'GIVEN', 'GLASS', 'GLOBE', 'GOING', 'GRACE', 'GRADE', 'GRAND', 'GRANT', 'GRASS', 'GREAT', 'GREEN', 'GROSS', 'GROUP', 'GROWN', 'GUARD', 'GUESS', 'GUEST', 'GUIDE', 'HAPPY', 'HARRY', 'HEART', 'HEAVY', 'HENCE', 'HENRY', 'HORSE', 'HOTEL', 'HOUSE', 'HUMAN', 'IDEAL', 'IMAGE', 'INDEX', 'INNER', 'INPUT', 'ISSUE', 'JAPAN', 'JIMMY', 'JOINT', 'JONES', 'JUDGE', 'KNOWN', 'LABEL', 'LARGE', 'LASER', 'LATER', 'LAUGH', 'LAYER', 'LEARN', 'LEASE', 'LEAST', 'LEAVE', 'LEGAL', 'LEVEL', 'LEWIS', 'LIGHT', 'LIMIT', 'LINKS', 'LIVES', 'LOCAL', 'LOGIC', 'LOOSE', 'LOWER', 'LUCKY', 'LUNCH', 'LYING', 'MAGIC', 'MAJOR', 'MAKER', 'MARCH', 'MARIA', 'MATCH', 'MAYBE', 'MAYOR', 'MEANT', 'MEDIA', 'METAL', 'MIGHT', 'MINOR', 'MINUS', 'MIXED', 'MODEL', 'MONEY', 'MONTH', 'MORAL', 'MOTOR', 'MOUNT', 'MOUSE', 'MOUTH', 'MOVIE', 'MUSIC', 'NEEDS', 'NEVER', 'NEWLY', 'NIGHT', 'NOISE', 'NORTH', 'NOTED', 'NOVEL', 'NURSE', 'OCCUR', 'OCEAN', 'OFFER', 'OFTEN', 'ORDER', 'OTHER', 'OUGHT', 'PAINT', 'PANEL', 'PAPER', 'PARTY', 'PEACE', 'PETER', 'PHASE', 'PHONE', 'PHOTO', 'PIECE', 'PILOT', 'PITCH', 'PLACE', 'PLAIN', 'PLANE', 'PLANT', 'PLATE', 'POINT', 'POUND', 'POWER', 'PRESS', 'PRICE', 'PRIDE', 'PRIME', 'PRINT', 'PRIOR', 'PRIZE', 'PROOF', 'PROUD', 'PROVE', 'QUEEN', 'QUICK', 'QUIET', 'QUITE', 'RADIO', 'RAISE', 'RANGE', 'RAPID', 'RATIO', 'REACH', 'READY', 'REFER', 'RIGHT', 'RIVAL', 'RIVER', 'ROBIN', 'ROGER', 'ROMAN', 'ROUGH', 'ROUND', 'ROUTE', 'ROYAL', 'RURAL', 'SCALE', 'SCENE', 'SCOPE', 'SCORE', 'SENSE', 'SERVE', 'SEVEN', 'SHALL', 'SHAPE', 'SHARE', 'SHARP', 'SHEET', 'SHELF', 'SHELL', 'SHIFT', 'SHIRT', 'SHOCK', 'SHOOT', 'SHORT', 'SHOWN', 'SIGHT', 'SINCE', 'SIXTH', 'SIXTY', 'SIZED', 'SKILL', 'SLEEP', 'SLIDE', 'SMALL', 'SMART', 'SMILE', 'SMITH', 'SMOKE', 'SOLID', 'SOLVE', 'SORRY', 'SOUND', 'SOUTH', 'SPACE', 'SPARE', 'SPEAK', 'SPEED', 'SPEND', 'SPENT', 'SPLIT', 'SPOKE', 'SPORT', 'STAFF', 'STAGE', 'STAKE', 'STAND', 'START', 'STATE', 'STEAM', 'STEEL', 'STICK', 'STILL', 'STOCK', 'STONE', 'STOOD', 'STORE', 'STORM', 'STORY', 'STRIP', 'STUCK', 'STUDY', 'STUFF', 'STYLE', 'SUGAR', 'SUITE', 'SUPER', 'SWEET', 'TABLE', 'TAKEN', 'TASTE', 'TAXES', 'TEACH', 'TEETH', 'TERRY', 'TEXAS', 'THANK', 'THEFT', 'THEIR', 'THEME', 'THERE', 'THESE', 'THICK', 'THING', 'THINK', 'THIRD', 'THOSE', 'THREE', 'THREW', 'THROW', 'TIGHT', 'TIMES', 'TIRED', 'TITLE', 'TODAY', 'TOPIC', 'TOTAL', 'TOUCH', 'TOUGH', 'TOWER', 'TRACK', 'TRADE', 'TRAIN', 'TREAT', 'TREND', 'TRIAL', 'TRIED', 'TRIES', 'TRUCK', 'TRULY', 'TRUST', 'TRUTH', 'TWICE', 'UNDER', 'UNDUE', 'UNION', 'UNITY', 'UNTIL', 'UPPER', 'UPSET', 'URBAN', 'USAGE', 'USUAL', 'VALID', 'VALUE', 'VIDEO', 'VIRUS', 'VISIT', 'VITAL', 'VOICE', 'WASTE', 'WATCH', 'WATER', 'WHEEL', 'WHERE', 'WHICH', 'WHILE', 'WHITE', 'WHOLE', 'WHOSE', 'WOMAN', 'WOMEN', 'WORLD', 'WORRY', 'WORSE', 'WORST', 'WORTH', 'WOULD', 'WOUND', 'WRITE', 'WRONG', 'WROTE', 'YIELD', 'YOUNG', 'YOUTH']Fungsi Utilitas
Kami akan menentukan beberapa fungsi utilitas untuk membantu kami mencetak teks berwarna di konsol. Kami akan menggunakan pengaturan yang mirip dengan default Wordle
- Hijau = huruf yang benar di posisi yang benar
- Kuning = huruf yang benar, tetapi posisinya salah
- Abu-abu = huruf salah
Untuk ini, kami akan menggunakan Kaya. Cukup mudah untuk mencetak teks berwarna menggunakan kode ini
from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)_Dalam kode di atas, kami telah menetapkan tiga fungsi untuk mencetak teks berwarna menggunakan Kaya. Kami juga telah menambahkan pesan selamat datang dan instruksi pemain, yang akan digunakan dalam fungsi utama
Tebakan yang diizinkan diatur ke 6. Dalam fungsi utama, pertama-tama kita membuat instance kelas Console dari rich.console. Kami kemudian memilih kata acak dari word_list yang didefinisikan dalam words.py
Di baris terakhir, kami hanya mencetak pesan Selamat Datang dan Instruksi Pemain menggunakan from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)0
Putaran Permainan
Kami akan menjalankan while loop sampai semua tebakan telah digunakan. Mari kita lihat kodenya lalu jelaskan
Fungsi from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)1 menerima dua argumen β from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)2 dan from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)3 (jawaban yang benar). Kami memiliki variabel boolean from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)_4 yang pada dasarnya mengontrol while loop. Perulangan while akan berjalan hingga from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)4 menjadi True
from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)6 adalah daftar yang berisi kata-kata yang sudah bisa ditebak oleh pengguna. Daftar from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)7 akan berisi pola Wordle (terbuat dari kotak berwarna). Daftar from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)8 akan berisi kata-kata dengan warnanya
Setelah itu, kami menjalankan while loop hingga from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)4 dan meminta pengguna untuk menebak kata tersebut. Kami juga terus mengecek apakah kata yang ditebak oleh pengguna mengandung lima huruf atau tidak serta apakah pengguna sudah menebak kata tersebut.
Dalam salah satu kasus, kami mencetak kesalahan dan meminta pengguna menebak lagi
Jika pengguna telah menebak sebuah kata, kami memasukkan kata tersebut ke dalam daftar from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)6. Kemudian kami menggunakan fungsi yang disebut GUESS_STATEMENT = "\nEnter your guess" SQUARES = { 'correct_place': 'π©', 'correct_letter': 'π¨', 'incorrect_letter': 'β¬' } def check_guess(guess, answer): guessed = [] wordle_pattern = [] for i, letter in enumerate(guess): if answer[i] == guess[i]: guessed += correct_place(letter) wordle_pattern.append(SQUARES['correct_place']) elif letter in answer: guessed += correct_letter(letter) wordle_pattern.append(SQUARES['correct_letter']) else: guessed += incorrect_letter(letter) wordle_pattern.append(SQUARES['incorrect_letter']) return ''.join(guessed), ''.join(wordle_pattern) def game(console, chosen_word): end_of_game = False already_guessed = [] full_wordle_pattern = [] all_words_guessed = [] while not end_of_game: guess = Prompt.ask(GUESS_STATEMENT).upper() while len(guess) != 5 or guess in already_guessed: if guess in already_guessed: console.print("[red]You've already guessed this word!!\n[/]") else: console.print('[red]Please enter a 5-letter word!!\n[/]') guess = Prompt.ask(GUESS_STATEMENT).upper() already_guessed.append(guess) guessed, pattern = check_guess(guess, chosen_word) all_words_guessed.append(guessed) full_wordle_pattern.append(pattern) console.print(*all_words_guessed, sep="\n") if guess == chosen_word or len(already_guessed) == ALLOWED_GUESSES: end_of_game = True if len(already_guessed) == ALLOWED_GUESSES and guess != chosen_word: console.print(f"\n[red]WORDLE X/{ALLOWED_GUESSES}[/]") console.print(f'\n[green]Correct Word: {chosen_word}[/]') else: console.print(f"\n[green]WORDLE {len(already_guessed)}/{ALLOWED_GUESSES}[/]\n") console.print(*full_wordle_pattern, sep="\n")_1 untuk memeriksa apakah pengguna menebak kata dengan benar atau tidak
GUESS_STATEMENT = "\nEnter your guess" SQUARES = { 'correct_place': 'π©', 'correct_letter': 'π¨', 'incorrect_letter': 'β¬' } def check_guess(guess, answer): guessed = [] wordle_pattern = [] for i, letter in enumerate(guess): if answer[i] == guess[i]: guessed += correct_place(letter) wordle_pattern.append(SQUARES['correct_place']) elif letter in answer: guessed += correct_letter(letter) wordle_pattern.append(SQUARES['correct_letter']) else: guessed += incorrect_letter(letter) wordle_pattern.append(SQUARES['incorrect_letter']) return ''.join(guessed), ''.join(wordle_pattern) def game(console, chosen_word): end_of_game = False already_guessed = [] full_wordle_pattern = [] all_words_guessed = [] while not end_of_game: guess = Prompt.ask(GUESS_STATEMENT).upper() while len(guess) != 5 or guess in already_guessed: if guess in already_guessed: console.print("[red]You've already guessed this word!!\n[/]") else: console.print('[red]Please enter a 5-letter word!!\n[/]') guess = Prompt.ask(GUESS_STATEMENT).upper() already_guessed.append(guess) guessed, pattern = check_guess(guess, chosen_word) all_words_guessed.append(guessed) full_wordle_pattern.append(pattern) console.print(*all_words_guessed, sep="\n") if guess == chosen_word or len(already_guessed) == ALLOWED_GUESSES: end_of_game = True if len(already_guessed) == ALLOWED_GUESSES and guess != chosen_word: console.print(f"\n[red]WORDLE X/{ALLOWED_GUESSES}[/]") console.print(f'\n[green]Correct Word: {chosen_word}[/]') else: console.print(f"\n[green]WORDLE {len(already_guessed)}/{ALLOWED_GUESSES}[/]\n") console.print(*full_wordle_pattern, sep="\n")1 fungsi
Fungsi ini menerima dua argumen β kata yang ditebak oleh pengguna dan jawaban yang benar. Itu membandingkannya huruf demi huruf dan kemudian menggunakan fungsi pembantu yang kita definisikan sebelumnya untuk membuat string Pemformatan kaya untuk setiap huruf. Kemudian itu menggabungkan mereka semua menjadi satu string
Fungsi ini mengembalikan dua string β Kata tebakan berformat kaya dan kotak berwarna untuk kata tebakan tersebut
String yang dikembalikan disimpan dalam dua variabel, GUESS_STATEMENT = "\nEnter your guess" SQUARES = { 'correct_place': 'π©', 'correct_letter': 'π¨', 'incorrect_letter': 'β¬' } def check_guess(guess, answer): guessed = [] wordle_pattern = [] for i, letter in enumerate(guess): if answer[i] == guess[i]: guessed += correct_place(letter) wordle_pattern.append(SQUARES['correct_place']) elif letter in answer: guessed += correct_letter(letter) wordle_pattern.append(SQUARES['correct_letter']) else: guessed += incorrect_letter(letter) wordle_pattern.append(SQUARES['incorrect_letter']) return ''.join(guessed), ''.join(wordle_pattern) def game(console, chosen_word): end_of_game = False already_guessed = [] full_wordle_pattern = [] all_words_guessed = [] while not end_of_game: guess = Prompt.ask(GUESS_STATEMENT).upper() while len(guess) != 5 or guess in already_guessed: if guess in already_guessed: console.print("[red]You've already guessed this word!!\n[/]") else: console.print('[red]Please enter a 5-letter word!!\n[/]') guess = Prompt.ask(GUESS_STATEMENT).upper() already_guessed.append(guess) guessed, pattern = check_guess(guess, chosen_word) all_words_guessed.append(guessed) full_wordle_pattern.append(pattern) console.print(*all_words_guessed, sep="\n") if guess == chosen_word or len(already_guessed) == ALLOWED_GUESSES: end_of_game = True if len(already_guessed) == ALLOWED_GUESSES and guess != chosen_word: console.print(f"\n[red]WORDLE X/{ALLOWED_GUESSES}[/]") console.print(f'\n[green]Correct Word: {chosen_word}[/]') else: console.print(f"\n[green]WORDLE {len(already_guessed)}/{ALLOWED_GUESSES}[/]\n") console.print(*full_wordle_pattern, sep="\n")3 dan GUESS_STATEMENT = "\nEnter your guess" SQUARES = { 'correct_place': 'π©', 'correct_letter': 'π¨', 'incorrect_letter': 'β¬' } def check_guess(guess, answer): guessed = [] wordle_pattern = [] for i, letter in enumerate(guess): if answer[i] == guess[i]: guessed += correct_place(letter) wordle_pattern.append(SQUARES['correct_place']) elif letter in answer: guessed += correct_letter(letter) wordle_pattern.append(SQUARES['correct_letter']) else: guessed += incorrect_letter(letter) wordle_pattern.append(SQUARES['incorrect_letter']) return ''.join(guessed), ''.join(wordle_pattern) def game(console, chosen_word): end_of_game = False already_guessed = [] full_wordle_pattern = [] all_words_guessed = [] while not end_of_game: guess = Prompt.ask(GUESS_STATEMENT).upper() while len(guess) != 5 or guess in already_guessed: if guess in already_guessed: console.print("[red]You've already guessed this word!!\n[/]") else: console.print('[red]Please enter a 5-letter word!!\n[/]') guess = Prompt.ask(GUESS_STATEMENT).upper() already_guessed.append(guess) guessed, pattern = check_guess(guess, chosen_word) all_words_guessed.append(guessed) full_wordle_pattern.append(pattern) console.print(*all_words_guessed, sep="\n") if guess == chosen_word or len(already_guessed) == ALLOWED_GUESSES: end_of_game = True if len(already_guessed) == ALLOWED_GUESSES and guess != chosen_word: console.print(f"\n[red]WORDLE X/{ALLOWED_GUESSES}[/]") console.print(f'\n[green]Correct Word: {chosen_word}[/]') else: console.print(f"\n[green]WORDLE {len(already_guessed)}/{ALLOWED_GUESSES}[/]\n") console.print(*full_wordle_pattern, sep="\n")4, yang kemudian ditambahkan dalam daftar masing-masing, from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)8 dan from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)7
Di setiap loop, kami akan mencetak elemen dalam daftar from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)8 dipisahkan oleh karakter baris baru (GUESS_STATEMENT = "\nEnter your guess" SQUARES = { 'correct_place': 'π©', 'correct_letter': 'π¨', 'incorrect_letter': 'β¬' } def check_guess(guess, answer): guessed = [] wordle_pattern = [] for i, letter in enumerate(guess): if answer[i] == guess[i]: guessed += correct_place(letter) wordle_pattern.append(SQUARES['correct_place']) elif letter in answer: guessed += correct_letter(letter) wordle_pattern.append(SQUARES['correct_letter']) else: guessed += incorrect_letter(letter) wordle_pattern.append(SQUARES['incorrect_letter']) return ''.join(guessed), ''.join(wordle_pattern) def game(console, chosen_word): end_of_game = False already_guessed = [] full_wordle_pattern = [] all_words_guessed = [] while not end_of_game: guess = Prompt.ask(GUESS_STATEMENT).upper() while len(guess) != 5 or guess in already_guessed: if guess in already_guessed: console.print("[red]You've already guessed this word!!\n[/]") else: console.print('[red]Please enter a 5-letter word!!\n[/]') guess = Prompt.ask(GUESS_STATEMENT).upper() already_guessed.append(guess) guessed, pattern = check_guess(guess, chosen_word) all_words_guessed.append(guessed) full_wordle_pattern.append(pattern) console.print(*all_words_guessed, sep="\n") if guess == chosen_word or len(already_guessed) == ALLOWED_GUESSES: end_of_game = True if len(already_guessed) == ALLOWED_GUESSES and guess != chosen_word: console.print(f"\n[red]WORDLE X/{ALLOWED_GUESSES}[/]") console.print(f'\n[green]Correct Word: {chosen_word}[/]') else: console.print(f"\n[green]WORDLE {len(already_guessed)}/{ALLOWED_GUESSES}[/]\n") console.print(*full_wordle_pattern, sep="\n")8). Jika pengguna telah menebak kata dengan benar atau jumlah tebakan yang diizinkan telah habis, kami akan menyetel from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)4 ke from rich.prompt import Prompt from rich.console import Console from random import choice from words import word_list SQUARES = { 'correct_place': 'π©', 'correct_letter': 'π¨', 'incorrect_letter': 'β¬' } WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" GUESS_STATEMENT = "\nEnter your guess" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' def check_guess(guess, answer): guessed = [] wordle_pattern = [] for i, letter in enumerate(guess): if answer[i] == guess[i]: guessed += correct_place(letter) wordle_pattern.append(SQUARES['correct_place']) elif letter in answer: guessed += correct_letter(letter) wordle_pattern.append(SQUARES['correct_letter']) else: guessed += incorrect_letter(letter) wordle_pattern.append(SQUARES['incorrect_letter']) return ''.join(guessed), ''.join(wordle_pattern) def game(console, chosen_word): end_of_game = False already_guessed = [] full_wordle_pattern = [] all_words_guessed = [] while not end_of_game: guess = Prompt.ask(GUESS_STATEMENT).upper() while len(guess) != 5 or guess in already_guessed: if guess in already_guessed: console.print("[red]You've already guessed this word!!\n[/]") else: console.print('[red]Please enter a 5-letter word!!\n[/]') guess = Prompt.ask(GUESS_STATEMENT).upper() already_guessed.append(guess) guessed, pattern = check_guess(guess, chosen_word) all_words_guessed.append(guessed) full_wordle_pattern.append(pattern) console.print(*all_words_guessed, sep="\n") if guess == chosen_word or len(already_guessed) == ALLOWED_GUESSES: end_of_game = True if len(already_guessed) == ALLOWED_GUESSES and guess != chosen_word: console.print(f"\n[red]WORDLE X/{ALLOWED_GUESSES}[/]") console.print(f'\n[green]Correct Word: {chosen_word}[/]') else: console.print(f"\n[green]WORDLE {len(already_guessed)}/{ALLOWED_GUESSES}[/]\n") console.print(*full_wordle_pattern, sep="\n") if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS) game(console, chosen_word) 0 dan perulangan akan dihentikan
Lebih jauh di luar loop, kami akan memeriksa apakah tebakan yang diizinkan telah habis dan pengguna tidak dapat menebak kata dengan benar. Jika demikian, kami akan mencetak kata yang benar dan WORDLE X/6. Namun dalam kasus lain, kami akan mencetak WORDLE from rich.prompt import Prompt from rich.console import Console from random import choice from words import word_list SQUARES = { 'correct_place': 'π©', 'correct_letter': 'π¨', 'incorrect_letter': 'β¬' } WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" GUESS_STATEMENT = "\nEnter your guess" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' def check_guess(guess, answer): guessed = [] wordle_pattern = [] for i, letter in enumerate(guess): if answer[i] == guess[i]: guessed += correct_place(letter) wordle_pattern.append(SQUARES['correct_place']) elif letter in answer: guessed += correct_letter(letter) wordle_pattern.append(SQUARES['correct_letter']) else: guessed += incorrect_letter(letter) wordle_pattern.append(SQUARES['incorrect_letter']) return ''.join(guessed), ''.join(wordle_pattern) def game(console, chosen_word): end_of_game = False already_guessed = [] full_wordle_pattern = [] all_words_guessed = [] while not end_of_game: guess = Prompt.ask(GUESS_STATEMENT).upper() while len(guess) != 5 or guess in already_guessed: if guess in already_guessed: console.print("[red]You've already guessed this word!!\n[/]") else: console.print('[red]Please enter a 5-letter word!!\n[/]') guess = Prompt.ask(GUESS_STATEMENT).upper() already_guessed.append(guess) guessed, pattern = check_guess(guess, chosen_word) all_words_guessed.append(guessed) full_wordle_pattern.append(pattern) console.print(*all_words_guessed, sep="\n") if guess == chosen_word or len(already_guessed) == ALLOWED_GUESSES: end_of_game = True if len(already_guessed) == ALLOWED_GUESSES and guess != chosen_word: console.print(f"\n[red]WORDLE X/{ALLOWED_GUESSES}[/]") console.print(f'\n[green]Correct Word: {chosen_word}[/]') else: console.print(f"\n[green]WORDLE {len(already_guessed)}/{ALLOWED_GUESSES}[/]\n") console.print(*full_wordle_pattern, sep="\n") if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS) game(console, chosen_word) 1/6 di mana n adalah jumlah tebakan yang dilakukan pengguna untuk menebak kata dengan benar
Pada akhirnya, kami akan mencetak daftar pola Wordle yang dipisahkan oleh karakter baris baru (GUESS_STATEMENT = "\nEnter your guess" SQUARES = { 'correct_place': 'π©', 'correct_letter': 'π¨', 'incorrect_letter': 'β¬' } def check_guess(guess, answer): guessed = [] wordle_pattern = [] for i, letter in enumerate(guess): if answer[i] == guess[i]: guessed += correct_place(letter) wordle_pattern.append(SQUARES['correct_place']) elif letter in answer: guessed += correct_letter(letter) wordle_pattern.append(SQUARES['correct_letter']) else: guessed += incorrect_letter(letter) wordle_pattern.append(SQUARES['incorrect_letter']) return ''.join(guessed), ''.join(wordle_pattern) def game(console, chosen_word): end_of_game = False already_guessed = [] full_wordle_pattern = [] all_words_guessed = [] while not end_of_game: guess = Prompt.ask(GUESS_STATEMENT).upper() while len(guess) != 5 or guess in already_guessed: if guess in already_guessed: console.print("[red]You've already guessed this word!!\n[/]") else: console.print('[red]Please enter a 5-letter word!!\n[/]') guess = Prompt.ask(GUESS_STATEMENT).upper() already_guessed.append(guess) guessed, pattern = check_guess(guess, chosen_word) all_words_guessed.append(guessed) full_wordle_pattern.append(pattern) console.print(*all_words_guessed, sep="\n") if guess == chosen_word or len(already_guessed) == ALLOWED_GUESSES: end_of_game = True if len(already_guessed) == ALLOWED_GUESSES and guess != chosen_word: console.print(f"\n[red]WORDLE X/{ALLOWED_GUESSES}[/]") console.print(f'\n[green]Correct Word: {chosen_word}[/]') else: console.print(f"\n[green]WORDLE {len(already_guessed)}/{ALLOWED_GUESSES}[/]\n") console.print(*full_wordle_pattern, sep="\n")8)
Dalam fungsi utama, kita akan memanggil fungsi from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)_1 dengan from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)2 dan from rich.console import Console from random import choice from words import word_list WELCOME_MESSAGE = f'\n[white on blue] WELCOME TO WORDLE [/]\n' PLAYER_INSTRUCTIONS = "You may start guessing\n" ALLOWED_GUESSES = 6 def correct_place(letter): return f'[black on green]{letter}[/]' def correct_letter(letter): return f'[black on yellow]{letter}[/]' def incorrect_letter(letter): return f'[black on white]{letter}[/]' if __name__ == '__main__': console = Console() chosen_word = choice(word_list) console.print(WELCOME_MESSAGE) console.print(PLAYER_INSTRUCTIONS)3 sebagai argumen
Kode Proyek Lengkap
Berikut kode lengkap untuk klon Wordle
Membungkus
Pada artikel ini, kami membuat Wordle versi terminal kami sendiri. Tapi masih banyak yang bisa Anda bangun dari sini. Mirip dengan Wordle asli, Anda dapat membuat versi web dari proyek ini
Beri tahu saya jika Anda memiliki pertanyaan. Bagikan dengan temanmu
Repositori Kode. https. //github. com/ashutoshkris/Terminal-Wordle
Anda dapat membaca ini dan artikel saya yang lain di blog saya di sini
IKLAN
IKLAN
IKLAN
IKLAN
IKLAN
IKLAN
IKLAN
IKLAN
IKLAN
Pengembang Aplikasi di Thoughtworks India
Jika Anda membaca sejauh ini, tweet ke penulis untuk menunjukkan bahwa Anda peduli. Tweet terima kasih
Belajar kode secara gratis. Kurikulum open source freeCodeCamp telah membantu lebih dari 40.000 orang mendapatkan pekerjaan sebagai pengembang. Memulai