Aller au contenu

Projets

Présentation

Par groupe de 5 élèves, vous allez coder un jeu classique. Quelques exemples sont proposés ci-dessous par ordre de difficulté croissante :

  • jeu du pendu
  • jeu du morpion
  • jeu de puissance 4

Les buts d’un projet sont :

  • mettre en pratique/consolider les notions d’algorithmique et programmation vues en classe
  • s’initier à la démarche de projet en groupe

Lancement du projet

  1. Formez des groupes de 5 élèves.
  2. Choisissez collectivement un jeu à coder. Pour les premiers projets, le jeu à coder peut être imposé. Pour un premier projet, on débute en général par le jeu du pendu.
  3. Définissez un reponsable de partage qui aura pour rôle de créer et partager le dossier contenant le code de votre projet.
  4. Ouvrez chacun un compte Replit avec votre adresse de messagerie de l’ENT. Cette adresse est constituée de votre identifiant ENT prenom.nom (parfois suivi d’un chiffre) accroché à @monlycee.net. Pour cela, rendez vous à l’adresse replit.com.
  5. Une fois que chaque élève du groupe a ouvert un compte Replit, le responsable de partage crée un nouveau projet Replit depuis son compte (bouton “Create Python”). Il choisit comme nom de projet le nom du jeu suivi par l’année en cours et finalement le numéro du groupe. Par exemple pendu_2023-2024_03 (on sépare les information par des tirets du bas).
  6. Dans le projet, le responsable de partage crée un fichier pour chaque membre du groupe avec comme noms les prénoms des membres du groupe. Ex: haroun.py, celine.py etc. Remarque. L’extension .py dans les noms des fichiers est essentielle pour que ces fichiers soient reconnus comme des fichiers de programmes Python.
  7. Le responsable de partage partage ensuite le projet Replit avec les membres du groupe en renseignant les adresses de messagerie des élèves de son groupe. Le projet doit être également partagé avec M. Bensussan (bensussan.maths@gmail.com)

Mise en œuvre

  1. On commence sans les ordinateurs. Simuler une partie du jeu entre vous sur papier pour vous familiariser avec les étapes d’une partie.
  2. Décrire en français le plus précisément possible le déroulement d’une partie. Par convention, on écrit des phrases décrivant ce que fait l’ordinateur en commençant par le pronom “on”. Par exemple : “On affiche les règles du jeu.”, “On demande au joueur de choisir une lettre.” Aide. Dans la majorité des jeux, une grande partie des étapes sont contenues dans une boucle tant que. On répète ces étapes tant que le jeu n’est pas terminé. Écrire de manière collective cette description dans le fichier main.py en commentaire (en commençant chaque ligne par un #). Écrire cette procédure dans une fonction nouvelle_partie() :

    1
    2
    3
    4
    5
    6
    7
    8
    def nouvelle_partie():
        # On affiche les règles.
        # ...
        # ...
        # Tant que ...
        #   ...
        #   ...
        pass #(1)!
    
    1. pass ne fait rien mais permet d’éviter une erreur de syntaxe tant que la fonction nouvelle_partie n’a pas été complétée. Dès que vous commencerez à coder la fonction nouvelle_partie, vous pourrez supprimer pass.
  3. Découper votre projet en fonction. Chaque fonction réalise une tâche unique bien spécifique. Par exemple, pour le pendu, une fonction pourraît être afficher_regles().

  4. Répartissez-vous les tâches en commençant par les fonctions les plus simples. Chaque élève écrit sa fonction dans son fichier de programme.
  5. Chaque élève peut tester sa fonction dans son fichier personnel. Exemple :

    1
    2
    3
    4
    5
    6
    7
    def afficher_regles():
        print("Jeu du pendu")
        print("J'ai choisi un mot ...")
    
    
    if __name__ == '__main__': #(1)!
        afficher_regles()
    

    1. Si le programme est directement exécuté. La condition __name__ == '__main__' permet de limiter l’exécution du code qui suit lors des phases de test du module. Si le module est importé et exécuté depuis un autre fichier de porgramme, les instruction contenues dans le if ne seront pas exécutées. Cela évite les dégats !

    Dans le Shell (le terminal du système d’exploitation Unix virtuel associé au projet Replit) il suffit d’écrire après le dollard:

    $ python prenom.py
    
    puis d’appuyer sur la touche Enter.

  6. Lorsqu’une fonction est prête, on peut l’importer dans le fichier main.py pour l’utiliser dans la fonction nouvelle_partie(). Par exemple :

    from prenom import afficher_regles #(1)!
    
    
    def nouvelle_partie():
        # On affiche les règles.
        afficher_regles() #(2)!
        # ...
        # ...
        # Tant que ...
        #   ...
        #   ...
    
    
    if __name__ == '__main__':
        nouvelle_partie() #(3)!
    
    1. On a importé la fonction afficher_regles depuis le module prenom.py. Remarquez que l’extension .py n’est pas écrite dans l’importation.
    2. On a ajouté un appel de la fonction importée dans la fonction nouvelle_partie.
    3. On a jouté un appel de la fonction nouvelle_partie dans la zone de test. Il suffit d’exécuter dans la console $ python main.py pour tester une nouvelle partie.
  7. Avant de commencer, désigner un coordinateur qui sera chargé d’importer les fonctions dans le module main.py après validation avec l’élève auteur-ice de la fonction. Au cours de votre projet, vous allez sans doute remanier au fur et à mesure l’algorithme général décrivant la partie dans la fonction nouvelle_partie. Le coordinateur est aussi chargé de centraliser les suggestions de modification et de les prendre en compte dans le fichier main.py.

  8. Régulièrement, vous pouvez solliciter le professeur pour faire un bilan d’étape, demander un conseil ou poser une question.
  9. Un dernier conseil, de nombreux jeux nécessitent la génération aléatoire de valeurs, le mélange de tableaux. Pour cela, consulter la documentation de la bibliothèque random. En particulier, on utilise très souvent les fonctions randint, shuffle et choice.

Des idées pour aller plus loin

Vous pouvez écrire votre jeu pour qu’il fonctionne directement dans la console Python. Une autre façon de procéder est d’inclure à votre projet une interface graphique (GUI en anglais pour Graphical User Interface). L’Académie de Normandie propose des modules de GUI directement utilisables pour les jeux les plus courants.