Muovi l'immagine sullo schermo
Arrivati a questo punto, per riuscire a muovere l'immagine interessata č sufficiente aggiungere due punti principali:
La gestione degli eventi da tastiera.. mi spiego:
Quando premo la freccia destra, sposto l'immagine a destra, e cosė via;
L'aggiornamento della Superficie e poi della visualizzazione.
Prima di proseguire ricordo che per indicare la posizione dell'immagine abbiamo utilizzato la variabile dst (.x e .y).
Qui di seguito riporto il codice del ciclo di gioco modificato ( le parti nuove sono in grassetto )
for( ; ; ) // ciclo principale di gioco
{
SDL_Delay(frame_skip); // rallenta il ciclo di RunTime
if (SDL_PushEvent(&test_event) == 0) //
{
SDL_PollEvent(&event);
/* gestione degli eventi da tastiera */
keys = SDL_GetKeyState(NULL); // aggiorna la situazione attuale dei
// tasti premuti o no
if ( keys[SDLK_ESCAPE] == SDL_PRESSED ) // esco dal ciclo su
// pressione di Escape
break;
if ( keys[SDLK_UP] == SDL_PRESSED ) dst.y--;
if ( keys[SDLK_DOWN] == SDL_PRESSED ) dst.y++;
if ( keys[SDLK_LEFT] == SDL_PRESSED ) dst.x--;
if ( keys[SDLK_RIGHT] == SDL_PRESSED ) dst.x++;
}
SDL_UnlockSurface(screen); // sblocco screen
SDL_BlitSurface(image, NULL, screen, &dst);
SDL_LockSurface(screen); // blocco screen
SDL_UpdateRect(screen, 0, 0, 0, 0);
}
Arrivati a questo punto, per riuscire a muovere l'immagine interessata č sufficiente aggiungere due punti principali:
La gestione degli eventi da tastiera.. mi spiego:
Quando premo la freccia destra, sposto l'immagine a destra, e cosė via;
L'aggiornamento della Superficie e poi della visualizzazione.
Prima di proseguire ricordo che per indicare la posizione dell'immagine abbiamo utilizzato la variabile dst (.x e .y).
Qui di seguito riporto il codice del ciclo di gioco modificato ( le parti nuove sono in grassetto )
for( ; ; ) // ciclo principale di gioco
{
SDL_Delay(frame_skip); // rallenta il ciclo di RunTime
if (SDL_PushEvent(&test_event) == 0) //
{
SDL_PollEvent(&event);
/* gestione degli eventi da tastiera */
keys = SDL_GetKeyState(NULL); // aggiorna la situazione attuale dei
// tasti premuti o no
if ( keys[SDLK_ESCAPE] == SDL_PRESSED ) // esco dal ciclo su
// pressione di Escape
break;
if ( keys[SDLK_UP] == SDL_PRESSED ) dst.y--;
if ( keys[SDLK_DOWN] == SDL_PRESSED ) dst.y++;
if ( keys[SDLK_LEFT] == SDL_PRESSED ) dst.x--;
if ( keys[SDLK_RIGHT] == SDL_PRESSED ) dst.x++;
}
SDL_UnlockSurface(screen); // sblocco screen
SDL_BlitSurface(image, NULL, screen, &dst);
SDL_LockSurface(screen); // blocco screen
SDL_UpdateRect(screen, 0, 0, 0, 0);
}
A cura di: Oligoatria