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
- Formez des groupes de 5 élèves.
- 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.
- Définissez un reponsable de partage qui aura pour rôle de créer et partager le dossier contenant le code de votre projet.
- 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. - 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). - 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. - 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
- On commence sans les ordinateurs. Simuler une partie du jeu entre vous sur papier pour vous familiariser avec les étapes d’une partie.
-
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 fonctionnouvelle_partie()
:pass
ne fait rien mais permet d’éviter une erreur de syntaxe tant que la fonctionnouvelle_partie
n’a pas été complétée. Dès que vous commencerez à coder la fonctionnouvelle_partie
, vous pourrez supprimerpass
.
-
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()
. - 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.
-
Chaque élève peut tester sa fonction dans son fichier personnel. Exemple :
- 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 leif
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:
puis d’appuyer sur la touche Enter. - Si le programme est directement exécuté. La condition
-
Lorsqu’une fonction est prête, on peut l’importer dans le fichier
main.py
pour l’utiliser dans la fonctionnouvelle_partie()
. Par exemple :- On a importé la fonction
afficher_regles
depuis le moduleprenom.py
. Remarquez que l’extension.py
n’est pas écrite dans l’importation. - On a ajouté un appel de la fonction importée dans la fonction
nouvelle_partie
. - 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.
- On a importé la fonction
-
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 fonctionnouvelle_partie
. Le coordinateur est aussi chargé de centraliser les suggestions de modification et de les prendre en compte dans le fichiermain.py
. - Régulièrement, vous pouvez solliciter le professeur pour faire un bilan d’étape, demander un conseil ou poser une question.
- 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 fonctionsrandint
,shuffle
etchoice
.
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.