Si vous êtes à la recherche d’une distraction amusante, le jeu de mots mêlés est une bonne option, à la fois pour jouer et pour programmer. Grâce au module Tkinter de Python, vous pouvez construire et jouer à ce jeu d’enfance dans une application GUI pratique.
Le programme affiche un mot mélangé que vous devez réarranger dans sa forme originale. Si vous êtes bloqué, vous pouvez cliquer sur le bouton Indice pour dévoiler une lettre à la fois. Devinez le mot correctement et gagnez gros !
Le module Random et Tkinter
Le module Random est un module Python intégré utilisé pour générer des nombres pseudo-aléatoires. Avec lui, vous pouvez générer des nombres aléatoires, choisir des éléments aléatoires dans une liste, mélanger le contenu d’une liste, et plus encore.
Ce module peut vous aider à créer plusieurs types d’applications, notamment une simulation de lancer de dés, un mélangeur de listes ou un générateur de mots de passe aléatoires. Vous pouvez également l’utiliser pour créer des jeux comme le cricket de la main et la devinette des nombres.
Tkinter vous permet de créer des applications de bureau. Il offre une variété de widgets comme des boutons, des étiquettes et des boîtes de texte qui facilitent le développement d’applications. Pour installer Tkinter, ouvrez un terminal et exécutez :
pip install tkinter
Comment créer un jeu de mots mêlés en utilisant Python
Vous pouvez trouver le code source du jeu Word Jumble en utilisant Python dans ce dépôt GitHub.
Importez les modules Tkinter et Random. Initialiser l’instance Tkinter et afficher la fenêtre racine. Définissez les dimensions en pixels, le titre et la couleur de fond de la fenêtre.
from tkinter import *
from random import choice
from random import shuffle
root = Tk()
root.title('Word Jumble Game')
root.geometry("700x500")
root.configure(background='aqua')
Définissez un widget d’étiquette pour afficher le mot mélangé. Spécifiez la fenêtre parent dans laquelle vous souhaitez le placer, le texte qu’il doit afficher, le style de police et la couleur de fond. Organisez le widget et ajoutez-lui un peu de rembourrage.
Définir une fonction, shuffler. Configurez l’étiquette hint pour qu’elle affiche une chaîne vide au départ et définissez la variable hint globale à zéro. Supprimez tout contenu dû à l’exécution antérieure du programme et affichez une chaîne d’entrée à la place.
my_label = Label(root, text="", font=("Arial", 48), bg='aqua')
my_label.pack(pady=20)
def shuffler():
hint_label.config(text='')
global hint_count
hint_count = 0
entry_answer.delete(0, END)
answer_label.config(text='', bg='aqua')
Définissez une liste de mots qui servira de base de données pour le jeu de mots mêlés. Sélectionnez un mot au hasard dans la liste et faites une liste de ses lettres individuelles. Mélangez la liste et reconstituez le mot en le parcourant et en le stockant dans une chaîne. Affichez le mot mélangé via l’étiquette sur l’écran.
fruits = ['apple', 'banana', 'strawberry', 'watermelon', 'kiwi']
global word
word = choice(fruits)
break_apart_word = list(word)
shuffle(break_apart_word)
global shuffled_word
shuffled_word = ''
for letter in break_apart_word:
shuffled_word += letter
my_label.config(text=shuffled_word)
Essayez de charger un ensemble de mots à partir d’un fichier comme une extension de ce projet. Le fichier dictionnaire-/usr/share/dict/words sur Linux/macOS-est une excellente source de mots.
Définir une fonction, répondre à. Si le mot correspond à la réponse de l’utilisateur, le message gagnant est affiché en vert. Sinon, affichez que c’était une mauvaise réponse en couleur rouge.
def answer():
if word == entry_answer.get():
answer_label.config(text="Correct answer!", bg='aqua', fg='green')
else:
answer_label.config(text="Wrong answer, please try again.", bg='aqua', fg='red')
Définir une fonction, indicepour inspecter le compte global de hint_count. Si le compte est inférieur à la longueur du mot, affichez la lettre suivante de la réponse correcte. Incrémentez le compte de la lettre d’indice de sorte que lors de la prochaine exécution de la fonction, le programme affiche la lettre suivante.
def hint(count):
global hint_count
hint_count = count
word_length = len(word)
if count < word_length:
hint_label.config(text=f'{hint_label["text"]} {word[count]}', bg='aqua')
hint_count += 1
Définissez un widget d’entrée pour prendre les entrées de l’utilisateur. Spécifiez la fenêtre parent dans laquelle vous voulez placer ce widget, ainsi que son style de police, et organisez-le en lui donnant un certain padding pour un espace suffisant.
Définissez un cadre pour les boutons. Un cadre agit comme un conteneur qui dirige le placement d’autres widgets. Il organise la mise en page et fournit un rembourrage en utilisant des sections rectangulaires sur l’écran. Définissez la fenêtre parent dans laquelle vous souhaitez placer le cadre ainsi que la couleur d’arrière-plan.
entry_answer = Entry(root, font=("Arial", 24))
entry_answer.pack(pady=20)
button_frame = Frame(root, bg='aqua')
button_frame.pack(pady=20)
Déclarez trois boutons : un pour afficher la bonne réponse, un pour choisir un autre mot, et un autre pour afficher des conseils. Spécifiez le cadre dans lequel vous voulez placer chaque bouton, et le texte qu’il doit afficher. Passez également la fonction à exécuter lorsque l’utilisateur clique sur le bouton, la couleur de fond, la largeur et la taille de la police.
Utilisez la fonction grid() pour placer ces boutons sur une ligne et trois colonnes différentes. Vous pouvez spécifier un remplissage pour ajouter de l’espace entre les boutons.
answer_button = Button(button_frame, text="Answer", command=answer, bg='orange', width=8, font=10)
answer_button.grid(row=0, column=0, padx=10)
my_button = Button(button_frame, text="Pick Another Word", command=shuffler, bg='orange', width=15, font=10)
my_button.grid(row=0, column=1, padx=10)
hint_button = Button(button_frame, text="Hint", command=lambda: hint(hint_count), bg='orange', width=5, font=10)
hint_button.grid(row=0, column=2, padx=10)
Créez des étiquettes pour la réponse et l’indice. Spécifiez la fenêtre parent dans laquelle vous souhaitez placer les étiquettes, le texte à afficher et le style de police, puis organisez le tout à l’aide des éléments suivants pack(). Passez une valeur de rembourrage, padypour un meilleur placement des étiquettes.
answer_label = Label(root, text='', font=("Arial", 22))
answer_label.pack(pady=20)
hint_label = Label(root, text='', font=("Arial", 22), bg='aqua')
hint_label.pack(pady=10)
Appelez la fonction shuffler() pour mettre en place le jeu. Ensuite, appelez mainloop() pour exécuter la boucle d’événements de Tkinter et écouter les événements (comme les pressions sur les boutons) jusqu’à ce que vous fermiez la fenêtre.
shuffler()
root.mainloop()
Assemblez tout le code et jouez au jeu Word Jumble n’importe quand, n’importe où.
Exemple de sortie du jeu Word Jumble
Lorsque le programme est lancé, il affiche un mot mélangé ainsi que les boutons Réponse, Choisir un autre mot et Indice. En cliquant sur le bouton Indice le programme affiche les lettres de la bonne réponse une par une. Si vous saisissez la bonne réponse, le programme affiche le message gagnant en vert.
Si vous devinez une mauvaise réponse, le programme vous demande de réessayer en couleur rouge.
Jeux de mots avec Python
En utilisant Python, vous pouvez développer une large et passionnante gamme de jeux de mots. Par exemple, le Scrabble, le Pendu, les mots croisés, le Mad Libs et les anagrammes. Ces jeux de mots peuvent être basés sur un terminal ou sur une interface graphique, comme vous l’avez vu ici.
Avec Tkinter, vous pouvez faire des jeux GUI très facilement. Tout ce que vous avez à faire est d’importer le module, de générer une fenêtre, d’ajouter des widgets et d’exécuter la boucle d’événements. Pour des jeux plus avancés, vous pouvez explorer les modules Pygame, Kivy, et Panda 3D.
