Files
snake2025/maison.c
2025-03-26 09:05:12 +01:00

212 lines
8.7 KiB
C

/**
*
* Ce programme montre comment il est possible de dessiner les figures
* géométriques suivantes :
*
* cercle
* disque ( cercle plein )
* ellipse
* ellipse pleine
* rectangle
* rectangle plein
* ligne
* point
* Courbe de Bézier
* polygone
* polygone plein
*
* Pour cela le programme utilise les fonctions suivantes :
*
*------------------------------------------------------------------------------
* MLV_draw_circle: Dessine un cercle à une position et un rayon spécifiés en
* paramètres.
*
* void MLV_draw_circle(
* int x, Coordonnée en X du centre du cercle
* int y, Coordonnée en Y du centre du cercle
* int radius, Rayon du cercle
* MLV_Color color Couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_filled_circle : Dessine un disque plein dont le centre et le rayon
* sont passés en parametres.
*
* void MLV_draw_filled_circle(
* int x, Coordonnée en X du centre du cercle
* int y, Coordonnée en Y du centre du cercle
* int radius, Rayon du cercle
* MLV_Color color Couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_ellipse : Dessine une ellipse dont la position, les rayons et la
* couleur sont passés en paramètres.
*
* MLV_draw_ellipse(
* int x, Coordonnée en X du centre de l'ellipse
* int y, Coordonnée en Y du centre de l'ellipse
* int radius_x, Rayon en X de l'ellipse
* int radius_y, Rayon en Y de l'ellipse
* MLV_Color color Couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_filled_ellipse : Dessine une ellipse pleine dont la position, les
* rayons et la couleur sont passés en paramètres.
*
* void MLV_draw_filled_ellipse(
* int x, Coordonnee en X du centre de l'ellipse
* int y, Coordonnee en Y du centre de l'ellipse
* int radius_x, Rayon en X de l'ellipse
* int radius_y, Rayon en Y de l'ellipse
* MLV_Color color Couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_rectangle : Dessine un rectangle dont la taille, la couleur et la
* position du sommet Nord-Ouest sont données en
* paramètres.
*
* void MLV_draw_rectangle(
* int x, Coordonnée en X du sommet Nord-Ouest du rectangle
* int y, Coordonnée en Y du sommet Nord-Ouest du rectangle
* int width, Largeur du rectangle
* int height, Hauteur du rectangle
* MLV_Color color Couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_filled_rectangle : Dessine un rectangle dont la taille, la couleur
* et la position du sommet Nord-Ouest sont données
* en paramètres.
* void MLV_draw_filled_rectangle(
* int x, Coordonnée en X du sommet Nord-Ouest du rectangle
* int y, Coordonnée en Y du sommet Nord-Ouest du rectangle
* int width, Largeur du rectangle
* int height, Hauteur du rectangle
* MLV_Color color Couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_line : Dessine une ligne dont les coordonnées des deux extrémités
* sont passées en paramètres.
* void MLV_draw_line(
* int x1, Coordonnée en X de la première extrémité de la ligne
* int y1, Coordonnée en Y de la première extrémité de la ligne
* int x2, Coordonnée en X de la deuxième extrémité de la ligne
* int y2, Coordonnée en Y de la deuxième extrémité de la ligne
* MLV_Color color Couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_point : Dessine un point dont les coordonées sont passées
* en paramètres.
*
* void MLV_draw_point(
* int x, Coordonnée en X du point
* int y, Coordonnée en Y du point
* MLV_Color color Couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_bezier_curve: Dessine une courbe de Bézier à partir d'une liste de
* sommets.
*
* void MLV_draw_bezier_curve(
* const int* vx, La liste des coordonnées en X des différents
* sommets de la courbe.
* const int* vy, La liste des coordonnées en Y des différents
* sommets de la courbe.
* int npoints, Le nombre de sommets de la courbe de Bézier.
* MLV_Color color La couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_polygon: Dessine un polygone à partir d'une liste de sommets.
*
* void MLV_draw_polygon(
* const int* vx, La liste des coordonnées en X des différents
* sommets du polygone.
* const int* vy, La liste des coordonnées en Y des différents
* sommets du polygone.
* int npoints, Le nombre de sommets du polygone.
* MLV_Color color La couleur du tracé
* );
*
* -----------------------------------------------------------------------------
* MLV_draw_polygon: Dessine un polygone plein à partir d'une liste de sommets.
*
* void MLV_draw_filled_polygon(
* const int* vx, La liste des coordonnées en X des différents
* sommets du polygone.
* const int* vy, La liste des coordonnées en Y des différents
* sommets du polygone.
* int npoints, Le nombre de sommets du polygone.
* MLV_Color color La couleur du tracé
* );
*
* -----------------------------------------------------------------------------
*
* Il existe d'autres fonctions de dessin. Vous les trouverez en consultant
* le fichier MLV_shape.h ou en tapant dans le terminal la commande :
*
* man MLV_shape.h
*/
#include <MLV/MLV_all.h>
int main(int argc, char *argv[]) {
/* Créé et affiche la fenêtre */
MLV_create_window("beginner - 2 - shapes", "shapes", 640, 480);
/* Dessine des cercles, ellipses, rectangles, lignes et points */
MLV_draw_circle(20, 20, 10, MLV_COLOR_PURPLE);
MLV_draw_filled_circle(50, 20, 10, MLV_COLOR_BROWN);
MLV_draw_ellipse(100, 20, 30, 10, MLV_COLOR_CYAN);
MLV_draw_filled_ellipse(170, 20, 30, 10, MLV_COLOR_PINK);
MLV_draw_rectangle(10, 50, 40, 20, MLV_COLOR_BLUE);
MLV_draw_filled_rectangle(70, 50, 40, 20, MLV_COLOR_GREEN);
MLV_draw_line(120, 50, 160, 90, MLV_COLOR_WHITE);
MLV_draw_point(10, 110, MLV_COLOR_RED);
/* Déclare les coordonnées pour la courbe de Bézier */
int coordonnee_x[4] = {10, 50, 90, 130};
int coordonnee_y[4] = {150, 190, 150, 190};
/* Dessine une courbe de Bézier avec ses sommets */
MLV_draw_bezier_curve(coordonnee_x, coordonnee_y, 4, MLV_COLOR_RED);
MLV_draw_circle(coordonnee_x[0], coordonnee_y[0], 3, MLV_COLOR_GREEN);
MLV_draw_circle(coordonnee_x[1], coordonnee_y[1], 3, MLV_COLOR_GREEN);
MLV_draw_circle(coordonnee_x[2], coordonnee_y[2], 3, MLV_COLOR_GREEN);
MLV_draw_circle(coordonnee_x[3], coordonnee_y[3], 3, MLV_COLOR_GREEN);
/* Déclare les coordonnées pour le polygone */
int coordonnee1_x[4] = {200, 240, 320, 280};
int coordonnee1_y[4] = {150, 190, 190, 150};
/* Dessine un polygone avec ses sommets */
MLV_draw_filled_polygon(coordonnee1_x, coordonnee1_y, 4, MLV_COLOR_BLUE);
MLV_draw_polygon(coordonnee1_x, coordonnee1_y, 4, MLV_COLOR_RED);
MLV_draw_circle(coordonnee1_x[0], coordonnee1_y[0], 3, MLV_COLOR_GREEN);
MLV_draw_circle(coordonnee1_x[1], coordonnee1_y[1], 3, MLV_COLOR_GREEN);
MLV_draw_circle(coordonnee1_x[2], coordonnee1_y[2], 3, MLV_COLOR_GREEN);
MLV_draw_circle(coordonnee1_x[3], coordonnee1_y[3], 3, MLV_COLOR_GREEN);
/* Affiche du texte */
MLV_draw_text(
10, 120,
"Juste au dessus de cette ligne, il y a un pixel rouge.",
MLV_COLOR_MAGENTA
);
/* Met à jour l'affichage */
MLV_actualise_window();
/* Attend 10 secondes avant la fin du programme */
MLV_wait_seconds(10);
/* Fermer la fenêtre */
MLV_free_window();
return 0;
}