Projet 1
Description
- Mini-Projet par groupe de 2 personnes.
- Durée d'un sprint : 1 semaine.
- Programme : Devinette d'un nombre - Faire deviner un nombre en indiquant plus ou moins.
- Langage : Python.
- Interfaces : Console.
Semaine 1
Spécifications & planification
- Former les groupes sur Classroom 50.
- Cloner le dépôt Git sur chaque ordinateur des membres du groupe.
- Créer un fichier
report.mdà la racine du dépôt pour décrire le projet. - Définir le MVP (Minimum Viable Product) du projet et le documenter dans
report.md.- Décrire les fonctionnalités minimales du projet.
- Par exemple, pour un projet Feuille-Caillou-Ciseaux, le MVP pourrait être :
- Le joueur peut choisir entre feuille, caillou ou ciseaux en tapant 1, 2 ou 3 dans la console.
- L'ordinateur choisit aléatoirement entre feuille, caillou ou ciseaux.
- Le programme affiche le résultat du jeu (gagné, perdu ou égalité).
- Faire un commit avec les changements et pousser le commit sur le dépôt Git.
- Vérifier que les changements sont bien sur toutes les machines des membres du groupe.
git pullpour récupérer les changements sur les autres machines.
- Définir les tâches à accomplir pour réaliser le MVP et les documenter dans
report.md.- Décrire les tâches à accomplir pour réaliser le MVP.
- Par exemple, pour un projet Feuille-Caillou-Ciseaux, les tâches pourraient être :
- Demander au joueur de choisir entre feuille, caillou ou ciseaux.
- Générer aléatoirement le choix de l'ordinateur.
- Comparer les choix du joueur et de l'ordinateur et déterminer le résultat du jeu.
- Afficher le résultat du jeu dans la console.
- Pour chaque tâche, estimer le temps nécessaire pour la réaliser et documenter l'estimation dans
report.md.
| Tâche | Temps estimé | Temps passé | Commentaire |
|---|---|---|---|
| Estimation | 10m | 15m | ... |
| ... | ... | ... | ... |
| Total | 2h | 1h30 | ... |
- Assigner les tâches aux membres du groupe et documenter l'assignation dans
report.md. - Faire les tâches assignées et faire un commit à la fin de chaque tâche pour documenter l'avancement du projet.
Exemple de report.md
# Projet 1 - Feuille-Caillou-Ciseaux
Membres : Alice et Bob
## MVP
- Le joueur peut choisir entre feuille, caillou ou ciseaux en tapant 1, 2 ou 3 dans la console.
- L'ordinateur choisit aléatoirement entre feuille, caillou ou ciseaux.
- Le programme affiche le résultat du jeu (gagné, perdu ou égalité).
## Tâches
| Tâche | Assignation | Temps estimé | Temps passé | Commentaire |
| --------------------------------------------------------------------------------- | ----------- | ------------ | ----------- | ----------- |
| Demander au joueur de choisir entre feuille, caillou ou ciseaux. | Alice | 10m | 15m | ... |
| Générer aléatoirement le choix de l'ordinateur. | Alice | 30m | ... | ... |
| Comparer les choix du joueur et de l'ordinateur et déterminer le résultat du jeu. | Bob | 1h | ... | ... |
| Afficher le résultat du jeu dans la console. | Alice | 15m | ... | ... |
| Total | | 1h55 | 2h30 | ... |
Semaine 2
Fusion de code
- Avoir un dépôt Git propre sur toutes les machines des membres du groupe.
- Vérifier avec
git statusqu'il n'y a pas de fichiers modifiés ou non suivis. - Vérifier qu'on est synchronisé avec le dépôt distant avec
git pull.
- Vérifier avec
- Définir une personne A et une personne B dans le groupe.
- A : ajouter dans le fichier
report.md:Modification par Aet faire un commit sans le pousser. - B : ajouter dans le fichier
report.md:Modification par B, faire un commit et pousser le commit sur le dépôt distant. - Vérifier sur github.com que le commit de B est bien présent.
- A : faire un "Pull (Rebase)" pour récupérer le commit de B et résoudre les conflits éventuels.
- À côté de "Changes", cliquer sur > Pull, Push > Pull (Rebase).
- Le fichier
report.mdest en conflit :
- Lorsqu'un fichier est en conflit, git ajoute des marqueurs :
-
<<<<<<< HEADModification par A=======Modification par B>>>>>>> origin/main
- Les lignes entre
<<<<<<< HEADet=======sont les modifications locales (Current Change). - Les lignes entre
=======et>>>>>>> origin/mainsont les modifications distantes (Incoming Change).
-
- Résoudre le conflit en choisissant quelle modification garder et supprimer les marqueurs.
- Modifier pour qu'il reste :
Modification par A et B(sans les marqueurs). - Sauvegarder et ajouter dans la staging area avec
git add --all. - Valider avec
git rebase --continue. - Pousser le commit sur le dépôt distant avec
git pushet vérifier sur github.com.
- Refaire le même exercice en inversant les rôles de A et B.
Séparation du code
- Créer un fichier
main.pyà la racine du dépôt pour contenir le code principal du projet. - Voici un exemple d'utilisation des fonctions pour séparer le code dans le fichier
main.py:
def demander_choix_joueur():
# Demander au joueur de choisir entre feuille, caillou ou ciseaux.
return choix
def generer_choix_ordinateur():
# Générer aléatoirement le choix de l'ordinateur.
return choix
def comparer_choix(joueur, ordinateur):
# Comparer les choix du joueur et de l'ordinateur et déterminer le résultat du jeu
return resultat
def afficher_resultat(resultat):
# Afficher le résultat du jeu dans la console.
if __name__ == "__main__":
joueur = demander_choix_joueur()
ordinateur = generer_choix_ordinateur()
resultat = comparer_choix(joueur, ordinateur)
afficher_resultat(resultat)
- Répartir le travail entre les membres du groupe pour implémenter les fonctions dans le fichier
main.py. - S'entraîner à faire des commits pour chaque fonction et à résoudre les conflits éventuels lors de la fusion du code.
Semaine 3
Instructions
- Au début de chaque semaine, commencer par un sprint planning pour définir les tâches à accomplir.
- Avancer sur les tâches définies dans le sprint planning durant la semaine.
- À la fin de chaque semaine, faire un sprint review pour présenter le travail accompli et un sprint retrospective pour discuter de ce qui a bien fonctionné et ce qui pourrait être amélioré.
Sprint Planning
- Structurer le travail en tâches claires et simples à réaliser.
- Lister les tâches à accomplir et estimer le temps nécessaire pour chacune.
- Prioriser les tâches et sélectionner celles qui seront réalisées durant le sprint.
Sprint Review
Sprint Retrospective
F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

