From d7cdf8cec9966cb92540098497c90ec963bd26b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20M=2E=20Thi=C3=A9ry?= <nthiery@users.sf.net> Date: Sun, 26 Nov 2023 16:55:19 +0100 Subject: [PATCH] =?UTF-8?q?Pr=C3=A9paration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gradebook.db | Bin 192512 -> 192512 bytes exemple-graphisme1.cpp | 4 +- exemple-graphisme2.cpp | 4 +- exemple-graphisme3.cpp | 16 +++--- fibonacci.cpp | 4 +- index.md | 106 ++++++++++++++++++++++++++++------------ max-test-tout-en-un.cpp | 6 +-- max-test.cpp | 6 +-- premier-dessin.cpp | 21 ++++---- primitives.cpp | 28 ++++++----- primitives.hpp | 24 +++++---- 11 files changed, 131 insertions(+), 88 deletions(-) diff --git a/.gradebook.db b/.gradebook.db index 61ec976c84dc4e896e73739ea2b26103deed93e1..cac8cd143196eddb6829e1037ec99c56320a98fe 100644 GIT binary patch delta 5049 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 arWhC`o0u9JS*9i@8JHv`nweUFjR61?Tq?%^ delta 3851 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 diff --git a/exemple-graphisme1.cpp b/exemple-graphisme1.cpp index 745b342..7317429 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 9011afa..4445d3b 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 6a64196..77124e1 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 850813f..0e5b84a 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 33684a9..246d5a3 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 1aea445..7c02da1 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 5151d81..c0e16e1 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 71c1de6..95ffdbc 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 32da2fd..6e127cd 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 c5835b4..195a2e3 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 -- GitLab