
🌐 Aussi en: English · Deutsch · Español
Cela fait quelques jours que je m’amuse avec Python – surtout de la théorie : variables, boucles, conditions et les suspects habituels. Et comme tout débutant sensé, j’ai décidé que mon premier « vrai » projet devait être quelque chose d’épique.
Évidemment, ça voulait dire… le jeu du pendu.
C’est le défi parfait pour débuter :
- Vous pratiquez les variables en gardant la trace des lettres proposées et des erreurs.
- Vous utilisez des boucles pour le déroulement de la partie.
- Vous saupoudrez de conditions pour décider qui vit ou qui meurt (enfin, en ASCII).
Après quelques essais et erreurs (et pas mal de « Ah oui, Python est sensible à la casse »), ma version a fini par fonctionner. J’avoue avoir laissé ChatGPT « tuner » certaines parties – mais bon, c’est comme ça qu’on apprend plus vite, non ?
Ce que fait le jeu
- Choisit un mot au hasard dans une liste prédéfinie
- Affiche un bonhomme en ASCII à chaque mauvaise réponse
- Vous laisse deviner une lettre ou le mot entier
- Gère les majuscules, les minuscules et les propositions répétées
- Met en valeur mes super-pouvoirs Python grandissants
Pourquoi je l’adore
Ce n’est pas qu’un jeu – c’est une petite capsule temporelle qui montre où j’en suis aujourd’hui dans mon parcours de codeur.
Dans quelques mois, je le regarderai en me disant : « Waouh… j’ai fait du chemin. »
Mais pour l’instant, c’est un pur bonheur de voir mon terminal se remplir de tirets bas, d’art ASCII et de messages de victoire (ou de défaites tragiques).
Le mot de la fin
Si vous débutez en Python, codez un jeu du pendu. Sérieusement. C’est le terrain de jeu idéal pour expérimenter avec les boucles, la logique et la magie de l’ASCII. Et si votre code est propre et tourne sans bug, vous avez déjà gagné.
library.py
words = ["Apfel", "Banane", "Mango", "Kirsche", "Pfirsich", "Linux", "Kernel", "Docker", "Ansible", "Python"]
logo = ['''
_
| |
| |__ __ _ _ __ __ _ _ __ ___ __ _ _ __
| '_ \ / _` | '_ \ / _` | '_ ` _ \ / _` | '_ \
| | | | (_| | | | | (_| | | | | | | (_| | | | |
|_| |_|\__,_|_| |_|\__, |_| |_| |_|\__,_|_| |_|
__/ |
|___/''']
HANGMANPICS = ['''
+---+
| |
|
|
|
|
=========''', '''
+---+
| |
O |
|
|
|
=========''', '''
+---+
| |
O |
| |
|
|
=========''', '''
+---+
| |
O |
/| |
|
|
=========''', '''
+---+
| |
O |
/|\ |
|
|
=========''', '''
+---+
| |
O |
/|\ |
/ |
|
=========''', '''
+---+
| |
O |
/|\ |
/ \ |
|
=========''']
main.py
# =============================================================================
# Hangman Game
#
# File: main.py
# Author: Raphael Münch
# Email: you@example.com
# Website: https://www.apt-upgrade.me
#
# Created: 2025-08-15
# Last Updated: 2025-08-15
#
# Description:
# A simple Hangman game played in the console.
# Includes ASCII art, word guessing, and configurable max attempts.
#
# Copyright (c) 2025 Raphael Münch. All rights reserved.
#
# License:
# This software is licensed under the MIT License.
# You may use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, provided the copyright notice
# above appears in all copies.
#
# =============================================================================
import library
import os
import random
DEBUG = False
while True:
# Clear the console (Windows = 'cls', others = 'clear')
os.system('cls' if os.name == 'nt' else 'clear')
print(library.logo[0])
chosen_word = random.choice(library.words)
word_lower = chosen_word.lower()
# Create a mask: "_" for each letter in the word
mask = ["_"] * len(chosen_word)
guessed_letters = "" # Letters guessed in the current round
wrong_attempts = 0 # Count of wrong guesses
max_attempts = len(library.HANGMANPICS) - 1 # e.g., 6 wrong guesses allowed
found_letter = False
while True:
print(f"Your guesses: {guessed_letters}")
print(f"Current word: {' '.join(mask)}")
if DEBUG:
print(f"Chosen word: {chosen_word}")
print(f"Attempt: {wrong_attempts}/{max_attempts}")
choice = input("Enter a letter or guess the word: ").strip()
# Whole word guess
if len(choice) > 1:
if choice.lower() == word_lower:
mask = list(chosen_word) # Reveal the whole word
print("You win!!!")
break
else:
wrong_attempts += 1
print(f"\n\n{library.HANGMANPICS[min(wrong_attempts, max_attempts)]}")
if wrong_attempts >= max_attempts:
print("\n\aYou've lost!!!")
print(f"The word was: {chosen_word}")
break
continue
# Single letter guess
if not choice:
continue
guess = choice.lower()
# Skip if letter already guessed
if guess in guessed_letters:
print("Already guessed. Try another letter.")
continue
guessed_letters += guess
# Check if guess matches any letter in the word
found_letter = False
for i, ch in enumerate(word_lower):
if guess == ch:
mask[i] = chosen_word[i] # Preserve original case
found_letter = True
if not found_letter:
wrong_attempts += 1
print(f"\n\n{library.HANGMANPICS[min(wrong_attempts, max_attempts)]}")
if wrong_attempts >= max_attempts:
print("\n\aYou've lost!!!")
print(f"The word was: {chosen_word}")
break
if "".join(mask).lower() == word_lower:
print("You win!!!")
break
answer = input("Do you want to play again (y/n)? ").strip().lower()
if answer != "y":
break






