diff --git a/.gradebook.db b/.gradebook.db
index 61ec976c84dc4e896e73739ea2b26103deed93e1..cac8cd143196eddb6829e1037ec99c56320a98fe 100644
Binary files a/.gradebook.db and b/.gradebook.db differ
diff --git a/exemple-graphisme1.cpp b/exemple-graphisme1.cpp
index 745b3428ff22b1aef667a06829772b67311c05fa..7317429740501cc2d8307bbea318e0339d0bf360 100644
--- a/exemple-graphisme1.cpp
+++ b/exemple-graphisme1.cpp
@@ -3,8 +3,7 @@ using namespace sf;
 
 #include "primitives.hpp"
 
-int main()
-{
+int main() {
     // Crée une fenêtre de taille 640x480
     RenderWindow window(VideoMode(640, 480), "Ma super fenêtre");
 
@@ -23,4 +22,3 @@ int main()
     return 0;
 }
 
-
diff --git a/exemple-graphisme2.cpp b/exemple-graphisme2.cpp
index 9011afad186c017fa811662c2afc27e2a851999f..4445d3b217dc05ac5a788ca7c4a3f773e2afa922 100644
--- a/exemple-graphisme2.cpp
+++ b/exemple-graphisme2.cpp
@@ -4,8 +4,7 @@ using namespace sf;
 
 #include "primitives.hpp"
 
-int main()
-{
+int main() {
     /// BEGIN
     // Crée une fenêtre de taille 640x480
     RenderWindow window(VideoMode(640, 480), "Ma super fenêtre");
@@ -33,4 +32,3 @@ int main()
     return 0;
 }
 
-
diff --git a/exemple-graphisme3.cpp b/exemple-graphisme3.cpp
index 6a64196fe8d07748b12ddb23127d95b3d128a9d2..77124e14337a6cdd15194101da431d47f1b96a74 100644
--- a/exemple-graphisme3.cpp
+++ b/exemple-graphisme3.cpp
@@ -4,27 +4,27 @@ using namespace sf;
 
 #include "primitives.hpp"
 
-int main(){
-	// Créé et affiche la fenêtre
+int main() {
+    // Créé et affiche la fenêtre
     RenderWindow window(VideoMode(640, 480), "Ma super fenêtre");
     window.clear(Color::White);
 
-	// Dessine des cercles, ellipses, rectangles, lignes et points
+    // Dessine des cercles, ellipses, rectangles, lignes et points
     draw_circle(window, {20, 20}, 10, Color::Blue);
     draw_circle(window, {50, 20}, 10, Color::Red);
-	draw_rectangle(window, {10, 50}, 40, 20, Color::Blue );
+    draw_rectangle(window, {10, 50}, 40, 20, Color::Blue );
     draw_line(window, {120, 50}, {160, 90}, Color::Black);
     draw_point(window, {10, 110}, Color::Red);
 
-	// Affiche du texte
+    // Affiche du texte
     draw_text(window, {10, 120}, 14, "Voici un exemple de texte.", Color::Black);
 
-	// Met à jour l'affichage.
+    // Met à jour l'affichage.
     window.display();
 
-	// Attend 10 secondes avant la fin du programme.
+    // Attend 10 secondes avant la fin du programme.
     sleep(seconds(10));
 
-	return 0;
+    return 0;
 }
 
diff --git a/fibonacci.cpp b/fibonacci.cpp
index 850813f556a318f7010b4eb86e60e5f24494f1bb..0e5b84ad36e14ce1297872dc3b31c835ce095c6b 100644
--- a/fibonacci.cpp
+++ b/fibonacci.cpp
@@ -36,13 +36,13 @@ void fibonacciTest() {
     CHECK( fibonacci(6) == 8 );
 }
 
-int main(){
+int main() {
     fibonacciTest();
 
     int n;
     cout << "Entrez un entier : " << endl;
     cin >> n;
-    cout << "Fibonacci(" << n << ") vaut "<< fibonacci(n) << endl;
+    cout << "Fibonacci(" << n << ") vaut " << fibonacci(n) << endl;
     return 0;
 }
 
diff --git a/index.md b/index.md
index 33684a9258c09c3ff51d1b78400e67581141a1bd..246d5a31a42a2e6799fc0381be058e2d2d5a86fe 100644
--- a/index.md
+++ b/index.md
@@ -38,9 +38,9 @@ en plusieurs fichiers. Puis nous étudierons quelques exemples de
 programmes utilisant la bibliothèque SFML et nous en inspirerons pour
 programmer des dessins et interagir avec l'utilisateur.
 
-+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "1944ac8026cc545a57bcc39a8d55fe63", "grade": false, "grade_id": "cell-6d952c4decd8c706", "locked": true, "schema_version": 3, "solution": false, "task": false}}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "66602a703f36c2f7e318dabbea427a84", "grade": false, "grade_id": "cell-6d952c4decd8c706", "locked": true, "schema_version": 3, "solution": false, "task": false}}
 
-## <a name=Cours>Cours</a>
+## [Cours](cours.md)
 
 - Cours : [Cycle de vie d'un programme](cours-cycle-de-vie-d-un-programme.md)
 - Cours : [Modularité et compilation séparée](cours-modularite.md)
@@ -55,9 +55,9 @@ programmer des dessins et interagir avec l'utilisateur.
 
 ## TP
 
-+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "b3fecc2d15e9c0ee06eddcefbb2ad19a", "grade": false, "grade_id": "cell-88edc2f254ba7294", "locked": true, "schema_version": 3, "solution": false}}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "c14862eeb15c1d00c45129ecb04ba658", "grade": false, "grade_id": "cell-88edc2f254ba7294", "locked": true, "schema_version": 3, "solution": false}}
 
-### Exercice : préliminaires : compilation séparée
+### Exercice 1 : préliminaires : compilation séparée
 
 1.  Consultez le contenu des fichiers suivants : [factorielle.hpp](factorielle.hpp),
     [factorielle.cpp](factorielle.cpp), [factorielle-exemple.cpp](factorielle-exemple.cpp).
@@ -106,9 +106,9 @@ programmer des dessins et interagir avec l'utilisateur.
 
 % REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
 
-+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "f49d0ae7077b8d73d8bb2d37e0d9b548", "grade": false, "grade_id": "cell-41bec4fdd73fc56d", "locked": true, "schema_version": 3, "solution": false}}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "08916a6087c9fab33a500eaeb42a3e19", "grade": false, "grade_id": "cell-41bec4fdd73fc56d", "locked": true, "schema_version": 3, "solution": false}}
 
-### Exercice : compilation séparée
+### Exercice 2 : compilation séparée
 
 +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "0aa22e643a0731f21a052d645349ad26", "grade": false, "grade_id": "cell-89f33130471fc08e", "locked": true, "schema_version": 3, "solution": false}}
 
@@ -160,38 +160,80 @@ programmer des dessins et interagir avec l'utilisateur.
 
 % REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
 
-+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "7c740bf5fd075394305a0f98d1dd0422", "grade": false, "grade_id": "cell-96bafcc3c30ace6e", "locked": true, "schema_version": 3, "solution": false}}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "36737f42fbf6300e344e76a3b1301b30", "grade": false, "grade_id": "cell-96bafcc3c30ace6e", "locked": true, "schema_version": 3, "solution": false}}
 
-### Exercice : Premiers graphiques avec Jupyter
+### Exercice 3 : Premiers graphiques avec Jupyter
 
 1.  Refaites l'exercice 2 du [TD](TD.md) en complétant la feuille
     [premier-dessin](premier-dessin.md). Implantez chacun des items
     en vérifiant à chaque fois le résultat.
 
-+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "e883c664c0706a830228145c1004b74a", "grade": false, "grade_id": "cell-96bafcc3c30ace6f", "locked": true, "schema_version": 3, "solution": false}}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "a57556751a58812ad6c4403b1ef85a5d", "grade": false, "grade_id": "cell-96bafcc3c30ace6f", "locked": true, "schema_version": 3, "solution": false}}
 
-### Exercice : Premiers graphiques avec SFML ♣
+### Exercice 4 : Premiers graphiques avec SFML
 
-:::{attention}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "dc9004964871c8e7a51c6e61d4995bb1", "grade": false, "grade_id": "cell-96bafcc3c30ace6g", "locked": true, "schema_version": 3, "solution": false}}
 
-Il n'est à l'heure actuelle pas encore possible d'utiliser le serveur
-JupyterHub pour cet exercice. Il est donc à effectuer en local en
-salle de TP (ou sur votre machine personnelle si vous avez les
-logiciels requis). Si vous n'avez pas eu le temps de le faire en
-séance de TP, ce n'est pas critique pour l'avancement de votre
-projet. Aussi est-il marqué d'un ♣.
+:::::{attention} SFML et sessions graphiques
 
+Pour exécuter un programme utilisant la bibliothèque SFML, il est
+nécessaire d'être dans une ***interface graphique***; sinon, vous
+aurez une erreur comme :
+```
+./exemple-graphisme1 
+Failed to open X11 display; make sure the DISPLAY environment variable is set correctly
+```
+(X11 est le gestionnaire de session graphique sous UNIX).
+
+::::{admonition} Option 1 : Sur les ordinateurs des salles de TP
+
+Vous êtes automatiquement dans une session graphique. Vous n'avez donc
+rien de particulier à faire.
+
+::::
+
+::::{admonition} Option 2 : Avec le service JupyterHub@Paris-Saclay, depuis tout autre ordinateur ou tablette connectée à Internet
+:class: dropdown
+
+En parallèle de l'interface usuelle JupyterLab, vous pouvez lancer une
+interface graphique (dite XFCE Desktop) sur le même serveur. Vous
+pourrez ensuite basculer entre l'une et l'autre pour éditer et
+compiler vos programmes d'une part, et les exécuter d'autre part.
+
+:::{figure} https://nicolas.thiery.name/Enseignement/Info111/media/screencast-sfml-on-jupyterhub.gif
+Vidéo: lancer un programme graphique sur JupyterHub
 :::
 
-Pour installer les logiciels requis sur votre machine personnelle,
-voir les sections « Aide à l'installation » sur la [page logiciels du
-site du cours](http://nicolas.thiery.name/Enseignement/Info111/logiciels/#aide-installation).
-À noter que, pour utiliser la SFML sur CodeBlocks ou tout autre
-environnement de développement intégré (IDE),
-il faut configurer l'IDE. Plus encore que d'habitude, nous
-recommandons de compiler en ligne de commande dans le terminal. Pour
-l'instant, en salle de TP, il est nécessaire d'utiliser `info-111 compile`
-pour compiler un programme utilisant SFML.
+::::
+
+::::{admonition} Sur votre machine personnelle
+:class: dropdown
+
+L'installation, la configuration et l'utilisation de la SFML peut être
+un peu technique selon la configuration de votre ordinateur (système
+d'exploitation, environnement de développement, ...).  Nous donnons
+ici quelques pointeurs, mais après c'est à vous de fouiller la
+documentation, notamment sur le [site de la
+SFML](https://www.sfml-dev.org/index-fr.php) et de vous
+débrouiller. Dans le doute, utilisez plutôt une des deux options
+ci-dessus.
+
+La section « Salle de TP virtuelle » sur la [page logiciels du site du
+cours](https://nicolas.thiery.name/Enseignement/Info111/ComputerLab/README.html)
+donne des instructions pour installer JupyterLab, compilateur C++ et
+SFML. Sous GNU/Linux (Ubuntu, ...) cela devrait être suffisant pour
+travailler.
+
+Si vous souhaitez utiliser CodeBlocks, Visual Studio, ou tout autre
+environnement de développement intégré (IDE), il faudra configurer cet
+IDE pour utiliser la SFML. Plus encore que d'habitude, nous
+recommandons de compiler en ligne de commande dans le terminal.
+
+::::
+
+:::::
+
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "a0ff90a81efe68e4975687391da8ddc6", "grade": false, "grade_id": "cell-96bafcc3c30ace6h", "locked": true, "schema_version": 3, "solution": false}}
 
 1.  Ouvrez les fichiers [exemple-graphisme1.cpp](exemple-graphisme1.cpp)
     et [primitives.hpp](primitives.hpp) et consultez le premier.
@@ -223,9 +265,9 @@ pour compiler un programme utilisant SFML.
     à changer la valeur de la variable `delai` pour voir le résultat
     s'afficher plus longtemps.
 
-+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "851f78b272e43edba563532592fc2279", "grade": false, "grade_id": "cell-eaefcdbc75785adb", "locked": true, "schema_version": 3, "solution": false}}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "cb4372b6a345f17e803ae8856124785f", "grade": false, "grade_id": "cell-eaefcdbc75785adb", "locked": true, "schema_version": 3, "solution": false}}
 
-### Exercice ♣ : Souris et clavier
+### Exercice 5 : Souris et clavier ♣
 
 1.  Pour vous donner une idée de l'utilisation de la SFML et
     de notre bibliothèque de primitives, lisez attentivement
@@ -239,9 +281,9 @@ pour compiler un programme utilisant SFML.
 
     <!-- Solutions dans le TD !-->
 
-+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "5917c7b9cfd1dcba875ca0c00faa1060", "grade": false, "grade_id": "cell-5858dbcffa05aed3", "locked": true, "schema_version": 3, "solution": false}}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "6bb1aa5b00f1758bbd44d55f54bc3ea6", "grade": false, "grade_id": "cell-5858dbcffa05aed3", "locked": true, "schema_version": 3, "solution": false}}
 
-### Exercice ♣: Couche d'abstraction
+### Exercice 6 : Couche d'abstraction ♣
 
 Pour vous approprier la couche d'abstraction, consultez son
 implantation dans `primitives.cpp`. En vous inspirant de
@@ -254,9 +296,9 @@ Vous pouvez vous aider de la
 
 % REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE
 
-+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "346c0470eb0efbaa0d4446698ec913d5", "grade": false, "grade_id": "cell-48f3d0b08106b27e", "locked": true, "schema_version": 3, "solution": false, "task": false}}
++++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "d07cbe5dd5f6b305779f0b8a6d1128f3", "grade": false, "grade_id": "cell-48f3d0b08106b27e", "locked": true, "schema_version": 3, "solution": false, "task": false}}
 
-### Exercice  ♣: Jeu du Yams
+### Exercice 7_: Jeu du Yams ♣
 
 Reprenez le jeu du Yams du TP 6 en ajoutant une interface graphique.
 
diff --git a/max-test-tout-en-un.cpp b/max-test-tout-en-un.cpp
index 1aea445746f8a88fcc033fe647724cc78503e9df..7c02da12e285c4283540a8878916f6f3cc77dbad 100644
--- a/max-test-tout-en-un.cpp
+++ b/max-test-tout-en-un.cpp
@@ -12,9 +12,9 @@ int monMax(int a, int b) {
 }
 
 void monMaxTest() {
-    CHECK( monMax(2,3) == 3 );
-    CHECK( monMax(5,2) == 5 );
-    CHECK( monMax(1,1) == 1 );
+    CHECK( monMax(2, 3) == 3 );
+    CHECK( monMax(5, 2) == 5 );
+    CHECK( monMax(1, 1) == 1 );
 }
 
 int main() {
diff --git a/max-test.cpp b/max-test.cpp
index 5151d81db7df012c3f7f25d6a1ddaf85d034712d..c0e16e10fa47306f56219ea2eb4682951b76dd78 100644
--- a/max-test.cpp
+++ b/max-test.cpp
@@ -7,9 +7,9 @@ using namespace std;
 #include "max.hpp"
 
 void monMaxTest() {
-    CHECK( monMax(2,3) == 3 );
-    CHECK( monMax(5,2) == 5 );
-    CHECK( monMax(1,1) == 1 );
+    CHECK( monMax(2, 3) == 3 );
+    CHECK( monMax(5, 2) == 5 );
+    CHECK( monMax(1, 1) == 1 );
 }
 
 int main() {
diff --git a/premier-dessin.cpp b/premier-dessin.cpp
index 71c1de652e6bd54e01678e781c1781cb5ca3af7f..95ffdbc43fe6cb3f760bdfa3e98fecbfd721938b 100644
--- a/premier-dessin.cpp
+++ b/premier-dessin.cpp
@@ -5,8 +5,7 @@
 using namespace sf;
 using namespace std;  // Pour les exceptions dans la version distribuée
 
-int main()
-{
+int main() {
     int delai = 1;
     RenderWindow window(VideoMode(900, 480), "Ma super fenêtre");
     window.clear(Color::Green);
@@ -14,7 +13,7 @@ int main()
     // Dessine un point noir de coordonnées (418, 143)
 
     // Remplacez cette ligne et la suivante par le code adéquat
-    throw runtime_error("code non implanté ligne 17");
+    throw runtime_error("code non implanté ligne 16");
 
 
     window.display();
@@ -23,7 +22,7 @@ int main()
     // Dessine un segment blanc entre les points (100,200) et (200,200)
 
     // Remplacez cette ligne et la suivante par le code adéquat
-    throw runtime_error("code non implanté ligne 25");
+    throw runtime_error("code non implanté ligne 24");
 
 
     window.display();
@@ -32,7 +31,7 @@ int main()
     // Dessine un segment rouge entre les points (200,300) et (200,400)
 
     // Remplacez cette ligne et la suivante par le code adéquat
-    throw runtime_error("code non implanté ligne 33");
+    throw runtime_error("code non implanté ligne 32");
 
 
     window.display();
@@ -41,7 +40,7 @@ int main()
     // Dessine un rectangle horizontal vide de sommets diagonaux (200,200) et (400,300) et de contour rouge
 
     // Remplacez cette ligne et la suivante par le code adéquat
-    throw runtime_error("code non implanté ligne 41");
+    throw runtime_error("code non implanté ligne 40");
 
 
     window.display();
@@ -50,7 +49,7 @@ int main()
     // Dessine un rectangle horizontal plein noir de sommets diagonaux (400,150) et (500,200)
 
     // Remplacez cette ligne et la suivante par le code adéquat
-    throw runtime_error("code non implanté ligne 49");
+    throw runtime_error("code non implanté ligne 48");
 
 
     window.display();
@@ -59,7 +58,7 @@ int main()
     // Dessine un segment rouge entre les points (400,300) et (500,400)
 
     // Remplacez cette ligne et la suivante par le code adéquat
-    throw runtime_error("code non implanté ligne 57");
+    throw runtime_error("code non implanté ligne 56");
 
 
     window.display();
@@ -68,7 +67,7 @@ int main()
     // Dessine un cercle noir de centre (415,145) et de rayon 10
 
     // Remplacez cette ligne et la suivante par le code adéquat
-    throw runtime_error("code non implanté ligne 65");
+    throw runtime_error("code non implanté ligne 64");
 
 
     window.display();
@@ -77,11 +76,11 @@ int main()
     // Dessine un disque jaune de centre (700, 100) et de rayon 50
 
     // Remplacez cette ligne et la suivante par le code adéquat
-    throw runtime_error("code non implanté ligne 73");
+    throw runtime_error("code non implanté ligne 72");
 
 
     window.display();
-    sleep(seconds(10*delai));
+    sleep(seconds(10 * delai));
     return 0;
 }
 
diff --git a/primitives.cpp b/primitives.cpp
index 32da2fd14d8224ee5f45f042c721cea7a9f9d99f..6e127cd3051e008c5449700644c4633ad545896b 100644
--- a/primitives.cpp
+++ b/primitives.cpp
@@ -3,17 +3,17 @@
 #include <cmath>
 #include <iostream>
 
-void draw_point(RenderWindow& w, Point pos, Color color) {
+void draw_point(RenderWindow &w, Point pos, Color color) {
     Vertex p[] = { Vertex(pos, color) };
     w.draw(p, 1, sf::Points);
 }
 
-void draw_line(RenderWindow& w, Point pos1, Point pos2, Color color) {
+void draw_line(RenderWindow &w, Point pos1, Point pos2, Color color) {
     Vertex p[] = { Vertex(pos1, color), Vertex(pos2, color) };
     w.draw(p, 2, sf::Lines);
 }
 
-void draw_circle(RenderWindow& w, Point center, int r, Color color) {
+void draw_circle(RenderWindow &w, Point center, int r, Color color) {
     CircleShape shape(r);
     shape.setPosition(center);
     shape.setOutlineThickness(1.f);
@@ -23,7 +23,7 @@ void draw_circle(RenderWindow& w, Point center, int r, Color color) {
 }
 
 /// BEGIN draw_filled_circle
-void draw_filled_circle(RenderWindow& w, Point center, int r, Color color) {
+void draw_filled_circle(RenderWindow &w, Point center, int r, Color color) {
     CircleShape shape(r);
     shape.setPosition(center);
     shape.setOutlineThickness(0.f);
@@ -32,7 +32,8 @@ void draw_filled_circle(RenderWindow& w, Point center, int r, Color color) {
 }
 /// END draw_filled_circle
 
-void draw_rectangle(RenderWindow& w, Point pos, int width, int height, Color color) {
+void draw_rectangle(RenderWindow &w, Point pos, int width, int height,
+                    Color color) {
     RectangleShape shape(Vector2f(width, height));
     shape.setPosition(pos); //Top-left position
     shape.setOutlineThickness(1.f);
@@ -41,10 +42,11 @@ void draw_rectangle(RenderWindow& w, Point pos, int width, int height, Color col
     w.draw(shape);
 }
 
-void draw_filled_rectangle(RenderWindow& w, Point pos, int width, int height, Color color) {
+void draw_filled_rectangle(RenderWindow &w, Point pos, int width, int height,
+                           Color color) {
 
     // Remplacez cette ligne et la suivante par le code adéquat
-    throw runtime_error("code non implanté ligne 47");
+    throw runtime_error("code non implanté ligne 49");
 
 }
 
@@ -69,7 +71,7 @@ bool font_is_available() {
     return available;
 }
 
-void draw_text(RenderWindow& w, Point pos, int size, string str, Color co) {
+void draw_text(RenderWindow &w, Point pos, int size, string str, Color co) {
     if ( font_is_available() ) {
         sf::Text text;
         text.setFont(minipax);
@@ -81,18 +83,18 @@ void draw_text(RenderWindow& w, Point pos, int size, string str, Color co) {
     }
 }
 
-Point wait_mouse(RenderWindow& w) {
+Point wait_mouse(RenderWindow &w) {
     Event e;
     do w.waitEvent(e);
-    while(e.type != Event::MouseButtonPressed or
-            e.mouseButton.button != Mouse::Button::Left);
+    while (e.type != Event::MouseButtonPressed or
+           e.mouseButton.button != Mouse::Button::Left);
     return Point(e.mouseButton.x, e.mouseButton.y);
 }
 
-Event::KeyEvent wait_keyboard(RenderWindow& w) {
+Event::KeyEvent wait_keyboard(RenderWindow &w) {
     Event e;
     do w.waitEvent(e);
-    while(e.type != Event::KeyPressed);
+    while (e.type != Event::KeyPressed);
     return e.key;
 }
 
diff --git a/primitives.hpp b/primitives.hpp
index c5835b49f9f7caaa9d837a5eee65024b3b6881cc..195a2e36f83a84b1706f9ed4373e0ec676eb289d 100644
--- a/primitives.hpp
+++ b/primitives.hpp
@@ -57,7 +57,7 @@ using Point = Vector2f;
  * @param pos les coordonnées du point
  * @param color la couleur du point
  */
-void draw_point           (RenderWindow& w, Point pos, Color color);
+void draw_point           (RenderWindow &w, Point pos, Color color);
 
 /** Affiche une ligne de couleur entre deux positions données
  * @param w une fenêtre ouverte dans laquelle dessiner
@@ -65,7 +65,8 @@ void draw_point           (RenderWindow& w, Point pos, Color color);
  * @param pos1 les coordonnées du dernier point de la ligne
  * @param color la couleur de la ligne
  */
-void draw_line            (RenderWindow& w, Point pos1, Point pos2, Color color);
+void draw_line            (RenderWindow &w, Point pos1, Point pos2,
+                           Color color);
 
 /** Affiche un rectangle coloré vide
  * @param w une fenêtre ouverte dans laquelle dessiner
@@ -74,7 +75,8 @@ void draw_line            (RenderWindow& w, Point pos1, Point pos2, Color color)
  * @param height la hauteur du rectangle
  * @param color la couleur du trait
  */
-void draw_rectangle       (RenderWindow& w, Point pos, int width, int height, Color color);
+void draw_rectangle       (RenderWindow &w, Point pos, int width, int height,
+                           Color color);
 
 /** Affiche un rectangle coloré plein
  * @param w une fenêtre ouverte dans laquelle dessiner
@@ -83,7 +85,8 @@ void draw_rectangle       (RenderWindow& w, Point pos, int width, int height, Co
  * @param height la hauteur du rectangle
  * @param color la couleur du trait et du remplissage
  */
-void draw_filled_rectangle(RenderWindow& w, Point pos, int width, int height, Color color);
+void draw_filled_rectangle(RenderWindow &w, Point pos, int width, int height,
+                           Color color);
 
 /** Affiche un cercle coloré vide
  * @param w une fenêtre ouverte dans laquelle dessiner
@@ -91,15 +94,15 @@ void draw_filled_rectangle(RenderWindow& w, Point pos, int width, int height, Co
  * @param r le rayon du cercle
  * @param color la couleur du trait
  */
-void draw_circle          (RenderWindow& w, Point center, int r, Color color);
+void draw_circle          (RenderWindow &w, Point center, int r, Color color);
 
-/** Affiche un cercle coloré plein 
+/** Affiche un cercle coloré plein
  * @param w une fenêtre ouverte dans laquelle dessiner
  * @param center la position du centre du cercle
  * @param r le rayon du cercle
  * @param color la couleur du trait et du remplissage
  */
-void draw_filled_circle   (RenderWindow& w, Point center, int r, Color color);
+void draw_filled_circle   (RenderWindow &w, Point center, int r, Color color);
 
 /** Affiche du texte coloré à une position donnée
  * @param w une fenêtre ouverte dans laquelle dessiner
@@ -108,13 +111,14 @@ void draw_filled_circle   (RenderWindow& w, Point center, int r, Color color);
  * @param str la chaîne de caractères à afficher
  * @param color la couleur du texte
  */
-void draw_text            (RenderWindow& w, Point pos, int size, string str, Color color);
+void draw_text            (RenderWindow &w, Point pos, int size, string str,
+                           Color color);
 
 /** Attend que l'utilisateur appuie sur le clic gauche de la souris
  * @param w la fenêtre dans laquelle l'utilisateur doit cliquer
  * @return la position dans la fenêtre où l'utilisateur a cliqué
  */
-Point wait_mouse(RenderWindow& w);
+Point wait_mouse(RenderWindow &w);
 
 /** Attend que l'utilisateur appuie sur une touche du clavier
  * @param w la fenêtre concernée
@@ -122,6 +126,6 @@ Point wait_mouse(RenderWindow& w);
  * La liste des codes de touches est accessibles ici:
  * https://huit.re/sfml_key_codes
  */
-Event::KeyEvent wait_keyboard(RenderWindow& w);
+Event::KeyEvent wait_keyboard(RenderWindow &w);
 
 #endif