Création d’un Jeu de Dames avec Tkinter

Création d’un Jeu de Dames avec Tkinter

Salut, nous revoilà pour un tutoriel aussi intéressant que les précédent sur Python ! 😊 Aujourd’hui, on va créer un jeu de dames sympa en Python, en utilisant Tkinter pour l’interface graphique. Que tu sois novice ou déjà à l’aise en Python, suis ce guide étape par étape, et on s’amusera à coder ensemble !


Pré-requis

Avant de commencer, assure-toi que :

  • Python 3 est installé sur ton ordinateur.
  • Tkinter est bien installé (c’est inclus par défaut dans Python).
  • Un éditeur de code comme VS Code, PyCharm, ou tout simplement l’éditeur de texte de ton choix est prêt à l’emploi.

1️⃣ Structure du Projet

Nous allons créer une classe CheckersGame qui contient toute la logique et l’interface du jeu. L’interface graphique sera gérée via un Canvas de Tkinter, où chaque case et chaque pièce seront dessinées dynamiquement.


2️⃣ Installer Tkinter et Démarrer un Projet Basique

Crée un fichier Python (par exemple, dames.py) et commence par importer Tkinter :

class CheckersGame:
    def __init__(self, root):
        self.root = root
        self.root.title("Jeu de Dames 🎲")
        self.board_size = 8  # Échiquier 8x8
        self.cell_size = 60  # Taille d'une case (en pixels)
        self.board = []  # Plateau de jeu (tableau 2D)
        self.selected_piece = None  # Pièce sélectionnée
        self.current_turn = "white"  # Tour du joueur ("white" ou "black")

        # Crée un Canvas pour dessiner l’échiquier
        self.canvas = tk.Canvas(
            root, width=self.board_size * self.cell_size, height=self.board_size * self.cell_size
        )
        self.canvas.pack()
        self.canvas.bind("<Button-1>", self.on_click)

        self.init_board()  # Initialise le plateau
        self.draw_board()  # Dessine l'échiquier

4️⃣ Initialiser le Plateau

Les pièces sont placées dans les 3 premières et dernières rangées du plateau, mais seulement sur les cases foncées. Pour cela, on remplit le tableau self.board avec des pièces blanches et noires.

Code :

    def init_board(self):
        self.board = [["" for _ in range(self.board_size)] for _ in range(self.board_size)]

        for row in range(self.board_size):
            for col in range(self.board_size):
                if (row + col) % 2 == 1:  # Cases foncées
                    if row < 3:
                        self.board[row][col] = "black"  # Pièces noires
                    elif row > 4:
                        self.board[row][col] = "white"  # Pièces blanches

5️⃣ Dessiner l’Échiquier et les Pièces

Pour chaque case, on dessine un rectangle (clair ou foncé) et, si une pièce est présente, un cercle coloré.

Code :

    def draw_board(self):
        self.canvas.delete("all")  # Efface tout
        for row in range(self.board_size):
            for col in range(self.board_size):
                x1 = col * self.cell_size
                y1 = row * self.cell_size
                x2 = x1 + self.cell_size
                y2 = y1 + self.cell_size

                fill_color = "white" if (row + col) % 2 == 0 else "gray"
                self.canvas.create_rectangle(x1, y1, x2, y2, fill=fill_color)

                piece = self.board[row][col]
                if piece:
                    color = "white" if piece.startswith("white") else "black"
                    outline = "gold" if "king" in piece else "blue"
                    self.canvas.create_oval(
                        x1 + 10, y1 + 10, x2 - 10, y2 - 10, fill=color, outline=outline, width=2
                    )

6️⃣ Gérer les Clics

Quand un joueur clique sur une case, on doit :

  1. Sélectionner une pièce.
  2. Déplacer la pièce si le clic suivant est une case valide.

Code :

    def on_click(self, event):
        col = event.x // self.cell_size
        row = event.y // self.cell_size

        if self.selected_piece:
            self.move_piece(row, col)
        elif self.board[row][col].startswith(self.current_turn):
            self.selected_piece = (row, col)

7️⃣ Valider et Effectuer les Mouvements

Ajoutons une méthode pour vérifier si un mouvement est valide et pour déplacer une pièce.

Code :

    def move_piece(self, new_row, new_col):
        old_row, old_col = self.selected_piece
        if self.is_valid_move(old_row, old_col, new_row, new_col):
            piece = self.board[old_row][old_col]
            self.board[new_row][new_col] = piece
            self.board[old_row][old_col] = ""

            if abs(new_row - old_row) > 1:  # Capture
                middle_row = (old_row + new_row) // 2
                middle_col = (old_col + new_col) // 2
                self.board[middle_row][middle_col] = ""

            self.promote_to_king(new_row, new_col)
            self.switch_turn()
        else:
            messagebox.showerror("Erreur", "Mouvement non valide !")

        self.selected_piece = None
        self.draw_board()

8️⃣ Tester le Jeu

Ajoute ce bloc à la fin du fichier pour lancer le jeu :

if __name__ == "__main__":
    root = tk.Tk()
    game = CheckersGame(root)
    root.mainloop()

🎉 Bravo, Tu As Créé Ton Jeu de Dames !

À toi de jouer maintenant ! 😍 N’hésite pas à personnaliser l’apparence ou ajouter des règles supplémentaires (comme les Dames 👑). Et surtout, amuse-toi ! 😊 Tu peux télécharger le code source du projet sur notre dépôt GitHub.

1 Comment

  1. Rozi Bintoli

    merci pour ce tuto, sauf que le code poster ici est legerement different que github

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *