There isn’t much to say about this but I coded a basic hangman game to demonstrate comparing variables and while I will never do anything with this code I thought it might be kinda cool to pop it on GitHub in case it helps anyone else and I finally have something to put on the STEM section of this website!
import tkinter as tk
import random
# Create a class for the Hangman game
class HangmanGame:
def __init__(self, master):
# Initialize the game and set up the main window (master)
self.master = master
self.master.title("Hangman Game")
# Define a list of words for the game
self.wordlist = ["python", "hangman", "programming", "developer", "interface", "example"]
# Choose a random word from the wordlist
self.word = random.choice(self.wordlist)
# Initialize variables to keep track of game state
self.guesses = 0
self.max_guesses = 5
# Create a list to store the current state of the word with underscores for hidden letters
self.hidden_word = ["_" if char.isalpha() else char for char in self.word]
# Create a label to display the current state of the word
self.word_label = tk.Label(master, text=" ".join(self.hidden_word), font=("Helvetica", 20))
self.word_label.pack()
# Create labels and input elements for user interaction
self.input_label = tk.Label(master, text="Guess a letter: ", font=("Helvetica", 12))
self.input_label.pack()
self.entry = tk.Entry(master, font=("Helvetica", 12))
self.entry.pack()
# Create a button for making a guess
self.guess_button = tk.Button(master, text="Guess", command=self.make_guess, font=("Helvetica", 12))
self.guess_button.pack()
# Create a label to display messages to the user
self.message_label = tk.Label(master, text="", font=("Helvetica", 12))
self.message_label.pack()
# Function to handle the user's guess
def make_guess(self):
guess = self.entry.get()
# Check if the guess is a valid single letter
if len(guess) != 1 or not guess.isalpha():
self.message_label.config(text="Please enter a valid letter.")
return
# If the guess is in the word, update the hidden word and display it
if guess in self.word:
for i in range(len(self.word)):
if self.word[i] == guess:
self.hidden_word[i] = guess
self.word_label.config(text=" ".join(self.hidden_word))
# Check if the player has guessed the entire word
if "".join(self.hidden_word) == self.word:
self.message_label.config(text="You won! The word was: " + self.word)
self.entry.config(state="disabled")
self.entry.delete(0, "end")
else:
# Handle incorrect guess
self.guesses += 1
# Check if the player has used up all their guesses
if self.guesses >= self.max_guesses:
self.message_label.config(text="You lost! The word was: " + self.word)
self.entry.config(state="disabled")
else:
self.message_label.config(text=f"Wrong guess! {self.max_guesses - self.guesses} guesses left.")
self.entry.delete(0, "end")
# Entry point for the program
def main():
# Create the main window
root = tk.Tk()
hangman = HangmanGame(root)
root.mainloop()
# Run the main function if this script is executed
if __name__ == "__main__":
main()
You can find the latest code online on GitHub.
Join the Discussion
Have you ever coded a simple game like this Hangman example? What would you add or change to improve it?