1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| #include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
int main(int argc, char *argv[])
{
// déclaration des variables.
SDL_Surface *ecran = NULL, *texte = NULL;
TTF_Font *police = NULL;
SDL_Rect positionTexte;
SDL_Color couleurNoire = {0, 0, 0};
int continuer = 1;
SDL_Event event;
// initialisation de SDL et TTF
SDL_Init(SDL_INIT_VIDEO);
TTF_Init();
// initialisation des variables
police = TTF_OpenFont("gravity.ttf", 16);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Boisson", NULL);
texte = TTF_RenderText_Blended(police, "Test", couleurNoire);
// Positionnement du texte au debut du programme (au milieu de lécran)
positionTexte.x = ecran->w / 2 - texte->w / 2;
positionTexte.y = ecran->h / 2 - texte->h / 2;
// Boucle principale
// tant que la variable continuer est a 1, on attend un évèment
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
// exécuté quand l'utilisateur ferme la fenêtre : continuer est a 0 => on quitte la boucle
continuer = 0;
break;
case SDL_MOUSEBUTTONDOWN:
/* si l'utilisateur clique sur le clic gauche de la souris, positionTexte prends la valeur de la position du curseur moins la moitié de la taille de la surface du texte (pour centrer le texte sur le clic)*/
if (event.button.button == SDL_BUTTON_LEFT)
{
positionTexte.x = event.button.x - texte->w/2;
positionTexte.y = event.button.y - texte->h/2;
}
break;
}
// Remplir le fond d'ecran :
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
// Blit le texte a la position choisie par l'utilisateur :
SDL_BlitSurface(texte, NULL, ecran, &positionTexte);
// Rafraichir l'affichage
SDL_Flip(ecran);
}
// liberer la mémoire
TTF_CloseFont(police);
TTF_Quit();
SDL_FreeSurface(texte);
SDL_Quit();
// retourne 1 si le programme arrive à la fin (que l'utilisateur le ferme)
return 1;
} |
Partager