Skip to content
Snippets Groups Projects
Commit d7cdf8ce authored by Nicolas M. Thiéry's avatar Nicolas M. Thiéry
Browse files

Préparation

parent 692a5894
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -3,8 +3,7 @@ using namespace sf; ...@@ -3,8 +3,7 @@ using namespace sf;
#include "primitives.hpp" #include "primitives.hpp"
int main() int main() {
{
// Crée une fenêtre de taille 640x480 // Crée une fenêtre de taille 640x480
RenderWindow window(VideoMode(640, 480), "Ma super fenêtre"); RenderWindow window(VideoMode(640, 480), "Ma super fenêtre");
...@@ -23,4 +22,3 @@ int main() ...@@ -23,4 +22,3 @@ int main()
return 0; return 0;
} }
...@@ -4,8 +4,7 @@ using namespace sf; ...@@ -4,8 +4,7 @@ using namespace sf;
#include "primitives.hpp" #include "primitives.hpp"
int main() int main() {
{
/// BEGIN /// BEGIN
// Crée une fenêtre de taille 640x480 // Crée une fenêtre de taille 640x480
RenderWindow window(VideoMode(640, 480), "Ma super fenêtre"); RenderWindow window(VideoMode(640, 480), "Ma super fenêtre");
...@@ -33,4 +32,3 @@ int main() ...@@ -33,4 +32,3 @@ int main()
return 0; return 0;
} }
...@@ -4,27 +4,27 @@ using namespace sf; ...@@ -4,27 +4,27 @@ using namespace sf;
#include "primitives.hpp" #include "primitives.hpp"
int main(){ int main() {
// Créé et affiche la fenêtre // Créé et affiche la fenêtre
RenderWindow window(VideoMode(640, 480), "Ma super fenêtre"); RenderWindow window(VideoMode(640, 480), "Ma super fenêtre");
window.clear(Color::White); 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, {20, 20}, 10, Color::Blue);
draw_circle(window, {50, 20}, 10, Color::Red); 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_line(window, {120, 50}, {160, 90}, Color::Black);
draw_point(window, {10, 110}, Color::Red); 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); draw_text(window, {10, 120}, 14, "Voici un exemple de texte.", Color::Black);
// Met à jour l'affichage. // Met à jour l'affichage.
window.display(); window.display();
// Attend 10 secondes avant la fin du programme. // Attend 10 secondes avant la fin du programme.
sleep(seconds(10)); sleep(seconds(10));
return 0; return 0;
} }
...@@ -36,13 +36,13 @@ void fibonacciTest() { ...@@ -36,13 +36,13 @@ void fibonacciTest() {
CHECK( fibonacci(6) == 8 ); CHECK( fibonacci(6) == 8 );
} }
int main(){ int main() {
fibonacciTest(); fibonacciTest();
int n; int n;
cout << "Entrez un entier : " << endl; cout << "Entrez un entier : " << endl;
cin >> n; cin >> n;
cout << "Fibonacci(" << n << ") vaut "<< fibonacci(n) << endl; cout << "Fibonacci(" << n << ") vaut " << fibonacci(n) << endl;
return 0; return 0;
} }
......
...@@ -38,9 +38,9 @@ en plusieurs fichiers. Puis nous étudierons quelques exemples de ...@@ -38,9 +38,9 @@ en plusieurs fichiers. Puis nous étudierons quelques exemples de
programmes utilisant la bibliothèque SFML et nous en inspirerons pour programmes utilisant la bibliothèque SFML et nous en inspirerons pour
programmer des dessins et interagir avec l'utilisateur. 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 : [Cycle de vie d'un programme](cours-cycle-de-vie-d-un-programme.md)
- Cours : [Modularité et compilation séparée](cours-modularite.md) - Cours : [Modularité et compilation séparée](cours-modularite.md)
...@@ -55,9 +55,9 @@ programmer des dessins et interagir avec l'utilisateur. ...@@ -55,9 +55,9 @@ programmer des dessins et interagir avec l'utilisateur.
## TP ## 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), 1. Consultez le contenu des fichiers suivants : [factorielle.hpp](factorielle.hpp),
[factorielle.cpp](factorielle.cpp), [factorielle-exemple.cpp](factorielle-exemple.cpp). [factorielle.cpp](factorielle.cpp), [factorielle-exemple.cpp](factorielle-exemple.cpp).
...@@ -106,9 +106,9 @@ programmer des dessins et interagir avec l'utilisateur. ...@@ -106,9 +106,9 @@ programmer des dessins et interagir avec l'utilisateur.
% REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE % 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}} +++ {"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. ...@@ -160,38 +160,80 @@ programmer des dessins et interagir avec l'utilisateur.
% REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE % 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 1. Refaites l'exercice 2 du [TD](TD.md) en complétant la feuille
[premier-dessin](premier-dessin.md). Implantez chacun des items [premier-dessin](premier-dessin.md). Implantez chacun des items
en vérifiant à chaque fois le résultat. 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 :::::{attention} SFML et sessions graphiques
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 ♣.
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). ::::{admonition} Sur votre machine personnelle
À noter que, pour utiliser la SFML sur CodeBlocks ou tout autre :class: dropdown
environnement de développement intégré (IDE),
il faut configurer l'IDE. Plus encore que d'habitude, nous L'installation, la configuration et l'utilisation de la SFML peut être
recommandons de compiler en ligne de commande dans le terminal. Pour un peu technique selon la configuration de votre ordinateur (système
l'instant, en salle de TP, il est nécessaire d'utiliser `info-111 compile` d'exploitation, environnement de développement, ...). Nous donnons
pour compiler un programme utilisant SFML. 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) 1. Ouvrez les fichiers [exemple-graphisme1.cpp](exemple-graphisme1.cpp)
et [primitives.hpp](primitives.hpp) et consultez le premier. et [primitives.hpp](primitives.hpp) et consultez le premier.
...@@ -223,9 +265,9 @@ pour compiler un programme utilisant SFML. ...@@ -223,9 +265,9 @@ pour compiler un programme utilisant SFML.
à changer la valeur de la variable `delai` pour voir le résultat à changer la valeur de la variable `delai` pour voir le résultat
s'afficher plus longtemps. 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 1. Pour vous donner une idée de l'utilisation de la SFML et
de notre bibliothèque de primitives, lisez attentivement de notre bibliothèque de primitives, lisez attentivement
...@@ -239,9 +281,9 @@ pour compiler un programme utilisant SFML. ...@@ -239,9 +281,9 @@ pour compiler un programme utilisant SFML.
<!-- Solutions dans le TD !--> <!-- 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 Pour vous approprier la couche d'abstraction, consultez son
implantation dans `primitives.cpp`. En vous inspirant de implantation dans `primitives.cpp`. En vous inspirant de
...@@ -254,9 +296,9 @@ Vous pouvez vous aider de la ...@@ -254,9 +296,9 @@ Vous pouvez vous aider de la
% REMPLACEZ CETTE LIGNE PAR VOTRE RÉPONSE % 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. Reprenez le jeu du Yams du TP 6 en ajoutant une interface graphique.
......
...@@ -12,9 +12,9 @@ int monMax(int a, int b) { ...@@ -12,9 +12,9 @@ int monMax(int a, int b) {
} }
void monMaxTest() { void monMaxTest() {
CHECK( monMax(2,3) == 3 ); CHECK( monMax(2, 3) == 3 );
CHECK( monMax(5,2) == 5 ); CHECK( monMax(5, 2) == 5 );
CHECK( monMax(1,1) == 1 ); CHECK( monMax(1, 1) == 1 );
} }
int main() { int main() {
......
...@@ -7,9 +7,9 @@ using namespace std; ...@@ -7,9 +7,9 @@ using namespace std;
#include "max.hpp" #include "max.hpp"
void monMaxTest() { void monMaxTest() {
CHECK( monMax(2,3) == 3 ); CHECK( monMax(2, 3) == 3 );
CHECK( monMax(5,2) == 5 ); CHECK( monMax(5, 2) == 5 );
CHECK( monMax(1,1) == 1 ); CHECK( monMax(1, 1) == 1 );
} }
int main() { int main() {
......
...@@ -5,8 +5,7 @@ ...@@ -5,8 +5,7 @@
using namespace sf; using namespace sf;
using namespace std; // Pour les exceptions dans la version distribuée using namespace std; // Pour les exceptions dans la version distribuée
int main() int main() {
{
int delai = 1; int delai = 1;
RenderWindow window(VideoMode(900, 480), "Ma super fenêtre"); RenderWindow window(VideoMode(900, 480), "Ma super fenêtre");
window.clear(Color::Green); window.clear(Color::Green);
...@@ -14,7 +13,7 @@ int main() ...@@ -14,7 +13,7 @@ int main()
// Dessine un point noir de coordonnées (418, 143) // Dessine un point noir de coordonnées (418, 143)
// Remplacez cette ligne et la suivante par le code adéquat // 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(); window.display();
...@@ -23,7 +22,7 @@ int main() ...@@ -23,7 +22,7 @@ int main()
// Dessine un segment blanc entre les points (100,200) et (200,200) // Dessine un segment blanc entre les points (100,200) et (200,200)
// Remplacez cette ligne et la suivante par le code adéquat // 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(); window.display();
...@@ -32,7 +31,7 @@ int main() ...@@ -32,7 +31,7 @@ int main()
// Dessine un segment rouge entre les points (200,300) et (200,400) // Dessine un segment rouge entre les points (200,300) et (200,400)
// Remplacez cette ligne et la suivante par le code adéquat // 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(); window.display();
...@@ -41,7 +40,7 @@ int main() ...@@ -41,7 +40,7 @@ int main()
// Dessine un rectangle horizontal vide de sommets diagonaux (200,200) et (400,300) et de contour rouge // 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 // 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(); window.display();
...@@ -50,7 +49,7 @@ int main() ...@@ -50,7 +49,7 @@ int main()
// Dessine un rectangle horizontal plein noir de sommets diagonaux (400,150) et (500,200) // 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 // 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(); window.display();
...@@ -59,7 +58,7 @@ int main() ...@@ -59,7 +58,7 @@ int main()
// Dessine un segment rouge entre les points (400,300) et (500,400) // Dessine un segment rouge entre les points (400,300) et (500,400)
// Remplacez cette ligne et la suivante par le code adéquat // 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(); window.display();
...@@ -68,7 +67,7 @@ int main() ...@@ -68,7 +67,7 @@ int main()
// Dessine un cercle noir de centre (415,145) et de rayon 10 // Dessine un cercle noir de centre (415,145) et de rayon 10
// Remplacez cette ligne et la suivante par le code adéquat // 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(); window.display();
...@@ -77,11 +76,11 @@ int main() ...@@ -77,11 +76,11 @@ int main()
// Dessine un disque jaune de centre (700, 100) et de rayon 50 // Dessine un disque jaune de centre (700, 100) et de rayon 50
// Remplacez cette ligne et la suivante par le code adéquat // 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(); window.display();
sleep(seconds(10*delai)); sleep(seconds(10 * delai));
return 0; return 0;
} }
...@@ -3,17 +3,17 @@ ...@@ -3,17 +3,17 @@
#include <cmath> #include <cmath>
#include <iostream> #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) }; Vertex p[] = { Vertex(pos, color) };
w.draw(p, 1, sf::Points); 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) }; Vertex p[] = { Vertex(pos1, color), Vertex(pos2, color) };
w.draw(p, 2, sf::Lines); 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); CircleShape shape(r);
shape.setPosition(center); shape.setPosition(center);
shape.setOutlineThickness(1.f); shape.setOutlineThickness(1.f);
...@@ -23,7 +23,7 @@ void draw_circle(RenderWindow& w, Point center, int r, Color color) { ...@@ -23,7 +23,7 @@ void draw_circle(RenderWindow& w, Point center, int r, Color color) {
} }
/// BEGIN draw_filled_circle /// 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); CircleShape shape(r);
shape.setPosition(center); shape.setPosition(center);
shape.setOutlineThickness(0.f); shape.setOutlineThickness(0.f);
...@@ -32,7 +32,8 @@ void draw_filled_circle(RenderWindow& w, Point center, int r, Color color) { ...@@ -32,7 +32,8 @@ void draw_filled_circle(RenderWindow& w, Point center, int r, Color color) {
} }
/// END draw_filled_circle /// 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)); RectangleShape shape(Vector2f(width, height));
shape.setPosition(pos); //Top-left position shape.setPosition(pos); //Top-left position
shape.setOutlineThickness(1.f); shape.setOutlineThickness(1.f);
...@@ -41,10 +42,11 @@ void draw_rectangle(RenderWindow& w, Point pos, int width, int height, Color col ...@@ -41,10 +42,11 @@ void draw_rectangle(RenderWindow& w, Point pos, int width, int height, Color col
w.draw(shape); 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 // 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() { ...@@ -69,7 +71,7 @@ bool font_is_available() {
return 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() ) { if ( font_is_available() ) {
sf::Text text; sf::Text text;
text.setFont(minipax); text.setFont(minipax);
...@@ -81,18 +83,18 @@ void draw_text(RenderWindow& w, Point pos, int size, string str, Color co) { ...@@ -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; Event e;
do w.waitEvent(e); do w.waitEvent(e);
while(e.type != Event::MouseButtonPressed or while (e.type != Event::MouseButtonPressed or
e.mouseButton.button != Mouse::Button::Left); e.mouseButton.button != Mouse::Button::Left);
return Point(e.mouseButton.x, e.mouseButton.y); return Point(e.mouseButton.x, e.mouseButton.y);
} }
Event::KeyEvent wait_keyboard(RenderWindow& w) { Event::KeyEvent wait_keyboard(RenderWindow &w) {
Event e; Event e;
do w.waitEvent(e); do w.waitEvent(e);
while(e.type != Event::KeyPressed); while (e.type != Event::KeyPressed);
return e.key; return e.key;
} }
...@@ -57,7 +57,7 @@ using Point = Vector2f; ...@@ -57,7 +57,7 @@ using Point = Vector2f;
* @param pos les coordonnées du point * @param pos les coordonnées du point
* @param color la couleur 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 /** Affiche une ligne de couleur entre deux positions données
* @param w une fenêtre ouverte dans laquelle dessiner * @param w une fenêtre ouverte dans laquelle dessiner
...@@ -65,7 +65,8 @@ void draw_point (RenderWindow& w, Point pos, Color color); ...@@ -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 pos1 les coordonnées du dernier point de la ligne
* @param color la couleur 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 /** Affiche un rectangle coloré vide
* @param w une fenêtre ouverte dans laquelle dessiner * @param w une fenêtre ouverte dans laquelle dessiner
...@@ -74,7 +75,8 @@ void draw_line (RenderWindow& w, Point pos1, Point pos2, Color color) ...@@ -74,7 +75,8 @@ void draw_line (RenderWindow& w, Point pos1, Point pos2, Color color)
* @param height la hauteur du rectangle * @param height la hauteur du rectangle
* @param color la couleur du trait * @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 /** Affiche un rectangle coloré plein
* @param w une fenêtre ouverte dans laquelle dessiner * @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 ...@@ -83,7 +85,8 @@ void draw_rectangle (RenderWindow& w, Point pos, int width, int height, Co
* @param height la hauteur du rectangle * @param height la hauteur du rectangle
* @param color la couleur du trait et du remplissage * @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 /** Affiche un cercle coloré vide
* @param w une fenêtre ouverte dans laquelle dessiner * @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 ...@@ -91,15 +94,15 @@ void draw_filled_rectangle(RenderWindow& w, Point pos, int width, int height, Co
* @param r le rayon du cercle * @param r le rayon du cercle
* @param color la couleur du trait * @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 w une fenêtre ouverte dans laquelle dessiner
* @param center la position du centre du cercle * @param center la position du centre du cercle
* @param r le rayon du cercle * @param r le rayon du cercle
* @param color la couleur du trait et du remplissage * @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 /** Affiche du texte coloré à une position donnée
* @param w une fenêtre ouverte dans laquelle dessiner * @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); ...@@ -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 str la chaîne de caractères à afficher
* @param color la couleur du texte * @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 /** Attend que l'utilisateur appuie sur le clic gauche de la souris
* @param w la fenêtre dans laquelle l'utilisateur doit cliquer * @param w la fenêtre dans laquelle l'utilisateur doit cliquer
* @return la position dans la fenêtre où l'utilisateur a cliqué * @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 /** Attend que l'utilisateur appuie sur une touche du clavier
* @param w la fenêtre concernée * @param w la fenêtre concernée
...@@ -122,6 +126,6 @@ Point wait_mouse(RenderWindow& w); ...@@ -122,6 +126,6 @@ Point wait_mouse(RenderWindow& w);
* La liste des codes de touches est accessibles ici: * La liste des codes de touches est accessibles ici:
* https://huit.re/sfml_key_codes * https://huit.re/sfml_key_codes
*/ */
Event::KeyEvent wait_keyboard(RenderWindow& w); Event::KeyEvent wait_keyboard(RenderWindow &w);
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment