- Réalisation du Jeux Snake
- Un grand classique existant sur tout type de supports
- À jouer au clavier dans une fenêtre en mode graphique
Note: Specs techniques du jeu fournies en temps voulu.
- Développement en Langage C++ / Environnement Linux
- Versionnement avec Git et partage avec Github.com
- Utilisation du Shell Bash et des outils en ligne de commande
- Classe découpée en Groupes A et B
- [X] Constitution des binômes (voire trinômes, me contacter):
- [X] Mettez à jour le fichier Google Drive “Constitution des binômes”
- [X] Tout le monde est dans un binôme ?
- [X] Groupe A
- [X] Groupe B
- [X] Tout le monde est dans un binôme ?
- IMPORTANT: Binômes & Numéros des binômes ne devront plus changer ensuite! (Si problème contacter Alain Simac ou moi-même)
- [X] Mettez à jour le fichier Google Drive “Constitution des binômes”
- Coachings (présentiel): lundi, mercredi, vendredi (matin)
- F.A.Q. (distanciel): vendredi après-midi (sem. 1, 2 et 3)
- Soutenances les <2022-02-10 jeu.> et <2022-02-11 ven.>
- Discord + E-mail: communication écrite + F.A.Q.
- Nouveauté: Mes documents dispos sur Github.com:
https://github.com/nbercher/gt1_cpp
Remarque: Vous pourrez également cloner mon dépôt avec Git:
git clone https://github.com/nbercher/gt1_cpp coach
Et vous mettre à jour à tout moment:
git pull
- Coachings présentiels
- Partie cours (mais pas tout le temps)
- Beaucoup de pratique, entraide entre élèves encouragée (qque soit le binôme)
- Objectifs pour le prochain coaching
- Entre les coachings
- Vous travaillez en autonomie sur votre projet
- Vous vous entraidez pour cela (discutez de vos difficultés, vos solutions, etc.)
- F.A.Q.: C’est la “Foire Aux Questions”
- Venez avec vos questions, vos besoins, etc.
- Semaine 1: Mise en place, Bases C++ & POO
- Mise en place: WSL, VS Code, outils Linux, etc.
- Bases du langage C++ et POO
- <2022-01-19 mer.> Livrable: Dépôt Github.com
- <2022-01-21 ven.> Diagramme UML de vos classes d’objets
- BUG: Se fera plus tard!
- Si possible on commencera:
- Snake: SDL2 clavier & affichage
- Semaine 2: Snake: SDL2 clavier & affichage, boucle du jeu, classes & objets
- <2022-01-26 mer.> Évaluation Git
- <2022-01-28 ven.> Livrable: “Déplacement d’un seul carré” (la tête du snake)
- Semaine 3: Snake: Classes & objets pour gestion du ver et collisions
- <2022-02-02 mer.> Gestion du ver fonctionnelle
- <2022-02-04 ven.> Livrable: Version beta du jeu Snake
- Semaine 4: Finalisations du jeu Snake, Soutenances
- <2022-02-09 mer. 23:59> Livrable: Version finale du jeu Snake
- <2022-02-10 jeu.> et <2022-02-11 ven.> Soutenances
- Notation:
- Évaluation Git: Maîtrise Git + Github.com
- Qualité de la soutenance
- Jeux Snake:
- Conforme aux demandes, jouable, sans bugs
- Code lisible, propre et optimisé
- Utilisation et maîtrise pour la création de: Langage C++, librarie SDL2
- Maîtrise des outils (environnement Langage C++, SDL2)
- Bonus: Options rajoutées au jeu
- Soutenances:
- Dans la forme: ~15 minutes/binôme
- Préparer des slides
- Dans un binôme chaque élève doit présenter (présentation à répartir)
- Expression, vocabulaire, orthographe
- Dans le fond:
- Votre maîtrise du sujet
- Votre compréhension des potentiels problèmes non-résolus
- Le point sur votre marge de progression et d’amélioration
- Dans la forme: ~15 minutes/binôme
- WSL/Debian + g++ Linux = Environnement obligatoire pour tous!
Je veux que tout le monde utilise les mêmes outils
- Vous devrez écrire du code C++ pour Linux
Je ne veux pas de code écrit pour Windows!
- Votre code devra se compiler sous WSL et avec =g++=
- Utilisation de VS Code en mode WSL (ou Emacs)
Seul choix possible pour vous: l’éditeur “VS Code” ou “Emacs”
ATTENTION: Pénalités pour les binômes qui ne respecteraient pas ces points
Voir le fichier howto-wsl-env.org.
Voir le fichier howto-vscode+wsl.org.
Voir le fichier howto-xserver.org.
- Vous allez commencer à développer en apprenant:
- Vous serez en phase d’apprentissage: code testé individuellement et qui change souvent
- Vous développerez les fonctionnalités petit à petit, par petits morceaux
- Quand un bout de code deviendra satisfaisant:
- Il sera commité avec Git et donc partagé avec son binôme
- Il faut être raisonnable et trouver son équilibre entre committer trop souvent / trop peu souvent
- Mise en place des fichiers: ***VOUS DEVEZ TOUS AVOIR LA MÊME STRUCTURE DE DOSSIERS***
~/proj7/ <- Rappel: =~/= = =/home/eleveX/= ├ coach/ <- =git clone https://github.com/nbercher/gt1_cpp= (Optionel) └ snake/ <- =git clone [email protected]:MON_COMPTE_GITHUB/gtech1-bXX-snake.git snake= (Étape 4 du HowTo Git) ├ ÉLÈVE1/ <- Fichiers de l'élève1 (=contributions individuelles) │ ├ fichier.cpp │ └ fichier.hpp ├ ÉLÈVE2/ <- Fichiers de l'élève2 (=contributions individuelles) │ ├ fichier.cpp │ └ fichier.hpp ├ fichier.cpp <- Fichiers du jeu Snake en phase de construction (=contributions collectives) ├ fichier.hpp ├ Makefile ├ ...
En résumé:
~/proj7/snake/ÉLÈVE1/
: fichiers d’élève1~/proj7/snake/ÉLÈVE2/
: fichiers d’élève2~/proj7/snake/
: fichiers du jeu~/proj7/coach/
: fichiers du coach
- Fonctionnement et utilisation:
- Au début, je développe dans mes fichier(s) individuel(s)
- Je commite mes fichiers et ils sont partagés avec mon binôme
- Le code progresse et devient intéressant:
- Le binôme s’organise pour copier le code intéressant dans les fichiers du jeu
- Au début, je développe dans mes fichier(s) individuel(s)
- Le Shell Bash est souvent appelé par abus de langage un “Terminal”
- Pour y accéder, plusieurs choix:
- Lancer WSL: la fenêtre de terminal ainsi lancée vous accueille avec le Shell Bash
- Dans VS code en mode WSL: Créer un Terminal en mode “WSL/Debian”
- Les deux méthodes sont équivalentes dans le sens où vous dialoguez avec le même environnement
- Lancez le Shell Bash de votre choix
- Avec
pwd
: Où suis-je? (pwd = Print Working Directory)- Juste après le lancement d’un Shell, que cela donne-t-il?
/home/MON_LOGIN/
- Avec
mkdir
: Créez votre dossier principal~/proj7
mkdir ~/proj7
- Avec
ls
: Listez le contenu du dossier courant- Liste simple
- Liste étendue (option
-l
) - Liste des fichiers et dossiers cachés
ls # liste simple ls -l # liste étendue (format long avec détails: permissions, ownership, taille, date) ls -a # lister les fichiers cachés
- Avec
cd
: Changer de dossier: allez dans~proj7/
cd ~/proj7 # Aller dans le sous-dossier proj7/ de mon 'home directory' # Ou encore: cd # Aller dans mon 'home directory' cd proj7/ # Aller dans le sous-dossier proj7/ qui s'y trouve
- Avec
ls
: Listez à nouveau le contenu du dossier courant - Avec
cd
: Revenez dans votre ‘home directory’- En utilisant
~
- En utilisant
..
(=dossier parent)
cd ~/ # Aller mon 'home directory' # Ou encore: cd .. # Aller le dossier parent (OK si je suis dans ~proj7/)
- En utilisant
- Avec
cd
: Retournez dans~proj7/
- Avec
git
: Clonez le dépôt du coach sous le nom de dossiercoach
Rappel commande:git clone URL_DEPOT_DISTANT NOM_DOSSIER_LOCAL
git clone https://github.com/nbercher/gt1_cpp coach
- Outil créé par par Linus Torvalds en 2005, créateur de Linux, pour continuer à développer Linux
- Grands principes:
- Git travaille à l’échelle d’un dossier de départ et se préoccupe uniquement de ses sous-dossiers et sous-fichiers
- Git enregistre les changements des fichiers dans des “commits”
- Les commits s’enchainent (analogue à une blockchain), ils forment une histoire des fichiers = “versionnement”
- Git permet de transférer les commits par le réseau et à des utilisateurs de synchoniser leur travail
- Git sait fusionner (merge) les codes sources édités par plusieurs personnes en même temps
- Usages de Git:
- Versionner le code source: enregistrement des changements importants et à préserver
- Synchroniser les dépôts (ex: avec Github.com)
- Allez dans
~/proj7/
et continuez avec la mise en place du dépôt Github.com et Git local - Voir le fichier howto-git-workflow.org
- Vous devez être rigoureux et suivre chacune des étapes!
Dans la pratique, vous allez utiliser:
- VS Code pour éditer le code (ou Emacs)
- Le “Terminal WSL” ou le “Terminal VS Code” (en mode WSL) pour:
- Compiler votre code (g++, make)
- Versionner votre code (Git)
- g++ pour compiler le code
- make pour automatiser la compilation
- git pour versionner les codes sources (Mais aussi: le Makefile et tout autre fichier important)
- git et Github.com pour partager les codes sources dans le binôme (Et avec le coach)
- IMPORTANT: Se familiariser les rudiments du Shell (pwd, cd, mkdir, git, etc.)
- ***Travaillez entre les séances!***
Vous avez 10h/sem de C++ et 4h~8h de langues = 14h~18h/sem
Le reste du temps = travaillez sur votre projet autant que possible!
- IMPORTANT: Dépôts Git (locaux) et Github.com (mirroirs) créés et fonctionnels
- Reportez-vous au fichier howto-git-workflow.org en cas de besoin
- Chaque élève devra avoir configuré et testé ceci:
- Test 1 du howto: Synchro entre votre dépôt local et son miroir Github.com
git pull
etgit push
- Test 2 du howto:
git pull
croisés entre élèves du binômegit pull ALIAS_AUTRE_ELEVE main
Équivalent à: Mon PC <–pull– Github.com “autre élève”
- Votre fichier
~/proj7/snake/.git/config
doit ressembler à ceci:... [remote "origin"] url = [email protected]:MON_COMPTE_GITHUB/gtech1-bXX-snake.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "main"] remote = origin merge = refs/heads/main [remote "ALIAS_AUTRE_ELEVE"] url = https://github.com/COMPTE_AUTRE_ÉLÈVE/gtech1-bXX-snake.git fetch = +refs/heads/*:refs/remotes/origin/*
- Test 1 du howto: Synchro entre votre dépôt local et son miroir Github.com
- Travaillez en autonomie le C++, avec des ressources en ligne!
Exemple: Compilation + exécution d’un code écrit en C++ dans le fichier
hello.cpp
:- Coder
hello.cpp
:#include <iostream> using namespace std; int main(void) { cout << "Hello!" << endl; return 0; }
- Compiler:
g++ helloc.cpp -o hello
- Exécuter:
./hello
- Coder
- Familiarisez-vous avec le Shell Bash, Git, etc.