Altezza della finestra
Larghezza della finestra
| x | Coordinata x relativa alla posizione orizzontale della palla sullo schermo |
| y | Coordinata y relativa alla posizione verticale della palla sullo schermo |
| w | Larghezza della palla |
| h | L'altezza della palla |
| dx | velocità della palla lungo l'asse x |
| dy | velocità della palla lungo l'asse y |
| x | Coordinata x relativa alla posizione orizzontale della racchetta sullo schermo |
| y | Coordinata y relativa alla posizione verticale della racchetta sullo schermo |
| w | Larghezza della racchetta |
| h | L'altezza della racchetta |
Larghezza schermo intero
Altezza schermo intero
Puntatore globale ad un SDL_Window. E' la finestra su cui facciamo rendering.
Puntatore globale ad un SDL_Renderer. E' il renderer di SDL che useremo per disegnare sullo schermo
Puntatori statici globali a dei SDL_Surface
Inizializza le componenti di gioco, ovvero la palla e i paddle, con valori scelti di default.
Gestisce il punteggio dei giocatori e controlla se il punteggio di uno dei due sia arrivato a 10 (massimo raggiungibile).
Ritorna 0 se nessuno dei due player ha ancora fatto 10 punti. Ritorna 1 se il player1 ha fatto 10 punti. Ritorna 2 se il player0 ha fatto 10 punti.
| int check_collision( |
| ) |
Controlla quando la racchetta colpisce la palla e gestisce l'urto della palla con la parete.
| a ball_t | Variabile di tipo ball_t . |
| b paddle_t | Variabile di tipo paddle_t . |
Ritorna 1 se la racchetta ha toccato la palla, 0 altrimenti.
Permette il movimento della palla (inizializzata tramite una chiamata ad init_game() all'inizio della partita che decide quale direzione farle assumere) e, tramite una chiamata a check_collision(), controlla quando la racchetta colpisce la palla e gestisce l'urto della palla con la parete.
| static void move_paddle( |
| ) |
Gestisce il movimento dei paddle. Tramite i tasti up e down il paddle di destra andrà rispettivamente su e giù, tramite W ed S avverrà lo stesso col paddle di sinistra. All’interno del metodo vi sono anche dei controlli per evitare che il paddle non esca dalla schermata di gioco.
| d int | Indica la direzione del paddle. Se ha valore 0 il paddle va giù, se ha valore 1 il paddle va su. |
| pad int | Indica con il valore 0 il paddle del player0 e con il valore 1 il paddle del player1. |
| static void draw_game_over( |
| ) |
Implementa delle operazioni per poter impostare la schermata di game over .
| p int | Variabile che mi permette di capire quale schermata di fine gioco impostare. Se vale 1, verrà indicata sullo schermo la vittoria del player1, mentre se vale 2 verrà indicata sullo schermo la vittoria del player0. |
| SDL_BlitSurface( |
| ) |
Esegue un veloce trasferimento di bit dalla superficie di origine a quella di destinazione.
| SDL_Surface *source_surface | Superficie d’origine. |
| SDL_Rect *source_rect | La struttura che rappresenta il rettangolo da copiare. |
| SDL_Surface *destination_surface | Superficie di destinazione. |
| SDL_Rect *destination_rect | La struttura che rappresenta il rettangolo in cui sarà incollato il rettangolo copiato. |
Ritorna 0 in caso di successo e un codice negativo di errore in caso di insuccesso.
Disegna la rete al centro dello schermo.
| r = SDL_FillRect( |
| ) |
Funzione per riempire un rettangolo con un colore dato.
| SDL_Surface *surface | La superficie target. |
| SDL_Rect *rect | Il rettangolo da riempire. |
| Uint32 color | Il colore col quale riempire. |
Ritorna 0 in caso di successo e un codice negativo di errore in caso di insuccesso.
Disegna la palla come un quadratino.
Disegna i paddle sullo schermo
Riporta il punteggio del player0 sulla sommità dello schermo.
Riporta il punteggio del player1 sulla sommità dello schermo.
Funzione che dà il numero di millisecondi dai quali la libreria SDL è stata inizializzata.
Il numero di millisecondi dai quali la libreria SDL è stata inizializzata.
Usa questa funzione per aggiornare la coda degli eventi e lo stato interno dei device di input. Questo dovrebbe solamente eseguirsi nel thread che inizializza il sottosistema Video.
| const Uint8* keystate = SDL_GetKeyboardState( |
| ) |
Dà un’istantanea della posizione corrente sulla tastiera.
| int *numkeys | se non è NULL, riceve la lunghezza dell’array ritornato. |
Ritorna un array di kaystates. Per avere gli indici dei valori è sufficiente usare SDL_SCANCODE (+ _NomeTasto).
| SDL_RenderClear( |
| ) |
Pulisce la superficie su cui fare rendering.
| SDL_Renderer *renderer | Il renderer. |
Ritorna 0 in caso di successo e -1 in caso di errore.
| SDL_Delay( |
| ) |
Funzione che aspetta un certo numero di millisecondi per fare return.
| Uint32 ms | Il numero di millisecondi. |
| SDL_UpdateTexture( |
| ) |
Usa questa funzione per aggiornare il rettangolo della texture con i valori dei nuovi pixel.
| SDL_Texture *texture | La texture da aggiornare. |
| SDL_Rect *rect | Il rettangolo che rappresenta l’area da aggiornare. |
| void *pixels | La riga di pixel nel formato della texture. |
| int pitch | Il numero di byte in una riga di pixel. |
Ritorna 0 in caso di successo e un codice negativo di errore in caso di insuccesso.
| SDL_RenderCopy( |
| ) |
Copia una porzione della texture nel target di rendering corrente.
| SDL_Renderer *renderer | Il renderer. |
| SDL_Texture *texture | La texture di origine. |
| SDL_Rect *source_rect | La struttura SDL_Rect di origine. |
| SDL_Rect *destination_rect | La struttura SDL_Rect di destinazione. |
Ritorna 0 in caso di successo e un codice negativo di errore in caso di insuccesso.
| SDL_RenderPresent( |
| ) |
Aggiorna lo schermo con il rendering deciso in precedenza.
| SDL_Renderer* renderer | Il renderer. |
| SDL_FreeSurface( |
| ) |
Carica le immagini su una superficie RGB.
| SDL_Surface* surface | La superficie. |
| SDL_DestroyRenderer( |
| ) |
Distrugge il renderer e le texture associate.
| SDL_Renderer* renderer | Il renderer |
| SDL_DestroyWindow( |
| ) |
Funzione che distrugge la finestra.
| SDL_Window* window | La finestra. |
SDL_Quit arresta tutti i sottosistemi, inclusi quelli di default. Dovrebbe essere sempre chiamato prima che venga chiusa un’applicazione SDL.
| int init( |
| ) |
Inizializza la libreria SDL. All’interno di init abbiamo funzioni che si occupano di gestire la schermata di gioco e quindi di creare la finestra, la superficie dello schermo dove verranno successivamente creati gli elementi di gioco (rete, paddle e palla), la texture per la schermata, di caricare le immagini con titolo, numeri (per il segnapunti) e game over e impostare i loro colori.
| width int | Larghezza schermo intero. |
| height int | Altezza schermo intero. |
| argc int | E' un int che contiene il numero di parametri dati in input dal programma |
| args char*[] | E' un array di stringhe che sono gli input dati al programma |
Ritorna 1 se window, screen, screen_texture, title, numbermap ed end puntano al valore NULL, altrimenti ritorna 0.
| if ( |
|
Permette di inizializzare la libreria di SDL. Deve essere chiamata prima di ogni funzione di SDL In questo caso stiamo inizializzando i sottosistemi di default e quello relativo al video.
| SDL_INIT_VIDEO | Flag di inizializzazione del sistema. |
Ritorna 0 in caso di successo, Ritorna un codice di errore negativo in caso di insuccesso.
| printf( |
| ) |
Tale funzione ritorna un messaggio sull’ultimo errore verificatosi.
Il messaggio d’errore.
| SDL_CreateWindowAndRenderer( |
| ) |
Usa questa funzione per creare una finestra e un renderer di default.
| int width | La larghezza della finestra. |
| int height | L’altezza della finestra. |
| Uint32 window_flags | I flag usati per creare la finestra. |
| SDL_Window** window | La finestra. |
| SDL_Renderer** renderer | Il renderer. |
Ritorna 0 in caso di successo e un codice negativo di errore in caso di insuccesso.
| screen = SDL_CreateRGBSurfaceWithFormat( |
| ) |
Funzione per creare la superficie dello schermo dove andranno disegnati i vari elementi.
| Uint32 flags | I flag sono obsoleti e dovrebbero essere settati a 0. |
| int width | La larghezza in pixel della superficie da creare. |
| int height | L’altezza in pixel della superficie da creare. |
| int depth | La profondità in bit della superficie da creare. |
| Uint32 format | Il formato dei pixel della superficie da creare. |
Ritorna una nuova SDL_Surface in caso di successo, NULL in caso di insuccesso.
| screen_texture = SDL_CreateTextureFromSurface( |
| ) |
Funzione che serve a creare la texture per la schermata.
| SDL_renderer *renderer | Il renderer. |
| SDL_surface *surface | La schermata. |
Ritorna la texture creata oppure NULL in caso di errore.
| title = SDL_LoadBMP( |
| ) |
Funzione di SDL che serve a caricare un’immagine.
| file | il file contenente l’immagine BMP. |
Ritorna un puntatore a una nuova SDL_Surface o NULL in caso di errore.
| Uint32 colorkey = SDL_MapRGB( |
| ) |
Funzione di RGB che dà una terna RBG di colori a un pixel opaco, dato un formato.
| SDL_PixelFormat *format | Il formato del pixel. |
| Uint8 r | La componente di rosso del pixel, compresa tra 0 e 255. |
| Uint8 g | La componente di verde del pixel, compresa tra 0 e 255. |
| Uint8 b | La componente di blu del pixel, compresa tra 0 e 255. |
Il valore del pixel.
| SDL_SetColorKey( |
| ) |
Funzione che imposta la key del colore (pixel trasparente) su una surface.
| SDL_Surface *surface | La surface da aggiornare. |
| int flag | SDL_TRUE per abilitare color key, SDL_FALSE per disabilitare color key. |
| Uint32 key | Il pixel trasparente. |
Ritorna 0 in caso di successo e un codice negativo di errore in caso di insuccesso.