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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
#include <stdlib.h>
#include <stdio.h>
#include "SDL/SDL.h"
#include "SDL/SDL_ttf.h"
#include "SDL/SDL_mixer.h"
#include "SDL/SDL_framerate.h"
#include "image.h"
#include "init.h"
#include "close.h"
#include "timer.h"
int main( int argc, char *argv[ ] )
{
const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
const int SCREEN_BPP = 32;
SDL_Surface *screen = NULL; //Surface qui concerne l'écran
SDL_Surface *background = NULL;//L'arrière plan
SDL_Surface *message = NULL;//Un message
Mix_Chunk *sound = NULL; //Un son
SDL_Event evenement; //Événement
TTF_Font *font;
SDL_Color textColor = { 0, 0, 0 };
int quit = 0;
int frame = 0;
char fnBackground[12] = "BGS/sky.png";// Chaine pour charger l'image
FPSmanager fpsMan;
timer update = {0,0,0,0};
//Initialisation de la SDL
screen=initSDL(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BPP);
//Initialisation du FPSManager
SDL_initFramerate(&fpsMan);
//Réglage du FPS à 60
SDL_setFramerate(&fpsMan,35);
if (screen == NULL)
{
return EXIT_FAILURE;
}
//Ouverture du Font
font = TTF_OpenFont( "Arial.ttf", 16 );
//S'il y a une erreur dans le chargement du Font
if( font == NULL )
{
return EXIT_FAILURE;
}
sound = Mix_LoadWAV( "SND/Tornado By.wav" );
if (sound == NULL)
{
return EXIT_FAILURE;
}
//Mise en place du texte sur la surface message
background = load_image(fnBackground);
apply_surface( 0, 0, background, screen );
startTimer(&update);
while (quit==0)
{
while( SDL_PollEvent( &evenement ) )
{
//Si l'utilisateur a cliqué sur le X de la fenêtre
if( evenement.type == SDL_QUIT )
{//On quitte le programme
quit = 1;
}
if(evenement.type == SDL_KEYDOWN)
{
if (evenement.key.keysym.sym ==SDLK_ESCAPE)
{
quit = 1;
}
if (evenement.key.keysym.sym == SDLK_SPACE)
{
//On joue l'effet sonore
if( Mix_PlayChannel( -1, sound, 0 ) == -1 )
{
return EXIT_FAILURE;
}
}
}
}
//Mise à jour de l'écran
if( SDL_Flip( screen ) == -1 )
{
return EXIT_FAILURE;
}
frame++;
//Si une seconde est passee depuis la derniere mise à jour de la barre caption
if( getTicks(&update) > 1000 )
{
//Une chaine de caracteres temporaire
char caption[ 64 ];
//On calcule le nombre de frames par seconde et on cree la chaine de caracteres
sprintf( caption, "FPS : %f",SDL_getFramerate(&fpsMan));
//On met à jour le message
message = TTF_RenderText_Solid( font, caption, textColor );
apply_surface( 10, 10, message, screen );
//On relance le timer update
startTimer(&update);
SDL_framerateDelay(&fpsMan);
}
}
SDL_FreeSurface( background );
SDL_FreeSurface( message );
//Fermeture des Fonts qu'on a utilisé
TTF_CloseFont( font );
closeSDL();
return EXIT_SUCCESS;
} |
Partager