Programmation • Projet Académique Terminale générale : NSI

Étude de Cas : Jeu de Black Jack (Python & Pygame)

Conception et développement d'un logiciel simulant le jeu de Black Jack, réunissant toutes les notions acquises pendant l'apprentissage des bases en Python.

Interface principale du jeu Black Jack

Le Défi et la Solution

L'objectif : Créer une application fonctionnelle du jeu de Black Jack en partant de zéro, en contrôlant entièrement les interactions utilisateur avec une interface graphique simple mais intuitive pour garantir un code modulaire, réutilisable et facile à maintenir.

Technologies & Compétences

  • Python 3
  • Pygame
  • VS Code
  • POO
  • Kanban

Mon Processus de Développement

1. Conception

Réflexion sur les règles du Black Jack et modélisation des objets nécessaires : une `Carte`, un `Paquet` de cartes, une `Main` pour le joueur et la banque. Création d'un diagramme de classes simple pour visualiser les interactions.

2. Développement Backend

Implémentation des classes en Python. Développement de la logique principale : mélanger le paquet, distribuer les cartes, calculer les scores (en gérant la double valeur de l'As), et définir les conditions de victoire/défaite.

3. Boucle de Jeu & Événements

Mise en place de la fenêtre et de la boucle de jeu principale avec Pygame. Intégration de la logique, affichage des assets et gestion des événements du joueur.

Extrait de Code Pertinent

Un des défis était la gestion de la double valeur de l'As. Voici la méthode de la classe `Main` qui résout ce problème.

# Méthode au sein de la classe 'Main' pour calculer le score
        def get_value(self):
            value = 0
            num_aces = 0
            for card in self.cards:
                if card.rank == 'As':
                    num_aces += 1
                value += card.value
        
            # Si le score dépasse 21, un As peut valoir 1 au lieu de 11
            while value > 21 and num_aces > 0:
                value -= 10
                num_aces -= 1
            
            return value