#include #include #include #define DIM_H 800 #define DIM_V 600 int main() { // si inizializza il sistema video if( SDL_Init(SDL_INIT_VIDEO) <0 ) { // SDL_GetError() ritorna una descrizione dell'errore printf("Errore init SDL: %s\n", SDL_GetError()); return 1; } // all'uscita del programma esegui SDL_Quit per risistemare le cose atexit(SDL_Quit); //dichiariamo un puntatore a una struttura SDL_Surface SDL_Surface *screen; //indichiamo la superficie screen come direttamente collegata al video screen = SDL_SetVideoMode(DIM_H, DIM_V, 0,SDL_HWSURFACE|SDL_DOUBLEBUF); if ( screen == NULL ) { printf("Problemi con il settaggio dello schermo: %s\n", SDL_GetError()); return 1; } //variabile per il ciclo principale int fine=0; //memoria dello stato dello schermo (intero o a finestra) int full_s=0; //flag per SDL_SetVideoMode Uint32 flags=SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN; //dichiariamo una struttura SDL_Event SDL_Event event; //game loop, ovvero il loop che viene eseguito finchè non si esce while(!fine) { //SDL_WaitEvent attende il prossimo evento SDL_WaitEvent(&event); //premendo la x della finestra col mouse si esce if ( event.type == SDL_QUIT ) fine = 1; if ( event.type == SDL_KEYDOWN ) { //ma si esce anche premendo Esc if ( event.key.keysym.sym == SDLK_ESCAPE ) fine = 1; if ( event.key.keysym.sym == SDLK_SPACE ) { //premendo SPAZIO si passa in modalità schermo intero if(!full_s) { screen = SDL_SetVideoMode(DIM_H, DIM_V, 0,flags); full_s++; flags=SDL_HWSURFACE|SDL_DOUBLEBUF; } //premendolo ancora si torna in modalità finestra else { screen = SDL_SetVideoMode(DIM_H, DIM_V, 0,flags); full_s--; flags=SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN; } } } } return 0; }