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 74 75 76 77 78 79 80 81 82
|
void pause(void){
int continuer = 1;
SDL_Event event;
while (continuer){
SDL_WaitEvent(&event);
switch(event.type){
case SDL_QUIT:
continuer = 0;
}
}
}
void lanceFenetre(void){
//declaration de la taille de la fenetre
int hauteur = 512, largeur = 300, i, j;
//declaration des pointeurs SDL_Surface
SDL_Surface *ecran = NULL, *fondDegrade[hauteur], *tux = NULL;
//declaration des coordonnees
SDL_Rect position;
//chargement
//chargement de l'icone de le fenetre
SDL_WM_SetIcon(SDL_LoadBMP("images/icone.bmp"), NULL);
//chargement de la fenetre
SDL_Init(SDL_INIT_VIDEO);
//lancement de la fenetre
ecran = SDL_SetVideoMode(largeur, hauteur, 32, SDL_HWSURFACE);
//titre de la fenetre
SDL_WM_SetCaption("Calculatrice", NULL);
//chargement du degrade
for (i = 0 ; i <= hauteur ; i++)
fondDegrade[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, largeur, 1, 32, 0, 0, 0, 0);
//chargement du Tux
tux = IMG_Load("images/tux.png");
//creation
//creation de l'ecran
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
//creation du degrade
for (i = 0, j = 0 ; i <= hauteur ; i++){
if(i<hauteur/2){
position.x = 0; // Les lignes sont à gauche (abscisse de 0)
position.y = i; // La position verticale dépend du numéro de la ligne actuelle
SDL_FillRect(fondDegrade[i], NULL, SDL_MapRGB(ecran->format, 0, 0, i)); // Remplissage
SDL_BlitSurface(fondDegrade[i], NULL, ecran, &position); // Collage
}
else{
position.x = 0; // Les lignes sont à gauche (abscisse de 0)
position.y = i; // La position verticale dépend du numéro de la ligne actuelle
SDL_FillRect(fondDegrade[i], NULL, SDL_MapRGB(ecran->format, j, j, 255)); // Remplissage
SDL_BlitSurface(fondDegrade[i], NULL, ecran, &position); // Collage
j++;
}
}
//creation de l'image du tux
position.x = 0;
position.y = 0;
SDL_BlitSurface(tux, NULL, ecran, &position);
//pause
//ce qui se passe dans la fenetre
pause();
//liberation de la place
//liberation de l'espace du degrade
for (i = 0 ; i <= hauteur ; i++)
SDL_FreeSurface(fondDegrade[i]);
//liberation de l'espace de tux
SDL_FreeSurface(tux);
//dechargement de la fenetre
SDL_Quit();
} |
Partager