Very Simple Graphic Library
Funzioni | Variabili
Riferimenti per il file very_simple_gl.h

Very Simple Graphic Library. Continua...

#include <vector>
#include <SDL/SDL_mixer.h>
#include "quickcg.h"
#include "vsgl_types.h"
#include "oggettografico.h"
#include "rettangolo.h"
#include "cerchio.h"
#include "linea.h"
#include "sprite.h"
#include "disco.h"

Vai al codice sorgente di questo file.

Funzioni

void inizializza_grafica (int larghezza, int altezza, int fullscreen, const char *titolo)
 Funzione che inizializza la grafica e deve essere chiamata prima di ogni altra.
void disegna_punto (int x, int y, const Colore &c)
 Disegna un punto a video di un colore scelto.
Colore crea_colore (int r, int g, int b)
 Permette di generare un colore date le sue componenti rosso, verde e blu.
void scrivi (int x, int y, const char *s, const Colore &c=BIANCO)
 Permette di mostrare una scritta a video.
void aggiorna_schermo ()
 Aggiorna quello che viene mostrato a schermo.
void pausa ()
 Mette in pausa il programma, attendendo la pressione di un tasto.
void pulisci_schermo (const Colore &c=NESSUN_COLORE)
 Pulisce lo schermo, colorandolo di un solo colore.
void imposta_colore_sfondo (const Colore &c=NERO)
 Imposta il colore di sfondo.
int crea_rettangolo (int x, int y, int larghezza, int altezza, const Colore &c=BIANCO)
 Crea un oggetto grafico di tipo rettangolo, con base e altezza paralleli agli assi, con l'angolo in alto a sinistra in posizione (x,y) e di colore specificato. Ritorna un indice che può essere poi utilizzato per effettuare delle operazioni sull'oggetto.
int crea_cerchio (int x, int y, int r, const Colore &c=BIANCO)
 Crea un oggetto grafico di tipo cerchio, con il centro in posizione (x,y) e di colore specificato. Ritorna un indice che può essere poi utilizzato per effettuare delle operazioni sull'oggetto.
int crea_disco (int x, int y, int r, const Colore &c=BIANCO)
 Uguale a crea_cerchio, solo che in questo caso il cerchio ha lo sfondo di colore c (disegna insomma un cerchio pieno). Ritorna un indice che può essere poi utilizzato per effettuare delle operazioni sull'oggetto.
int crea_linea (int x1, int y1, int x2, int y2, const Colore &c=BIANCO)
 Crea un oggetto grafico di tipo linea, con un estremo in posizione x1,y1 e l'altro in posizione x2,y2.
int crea_sprite (int x, int y, const string &filename)
 Crea un oggetto grafico di tipo sprite, cioè immagine in posizione x,y.
void disegna_oggetto (int indice_oggetto)
 Disegna a video un oggetto di cui viene passato l'indice come parametro.
void disegna_oggetti ()
 Disegna a video tutti gli oggetti creati.
void muovi_oggetto (int x, int y, int indice_oggetto)
 Muove un oggetto sullo schermo.
void ritardo (int millisecondi)
 Mette in pausa il programma per un certo tempo.
void leggi_mouse ()
 Legge lo stato del mouse e lo memorizza nelle variabili mouseX, mouseY, mouseTD, mouseTS.
int fatto ()
 Diventa vera quando viene premuto il tasto ESC o la x gi chiusura della finsetra, falsa altrimenti.
void leggi_stringa (char *input, const char *messaggio, int cancella, int x, int y, const Colore &c=NERO)
 Aspetta che l'utente inserisca una stringa da tastiera, ha un comportamento simile alla gets.
void inizializza_audio ()
 TODO (alex#5#): Da mettere a posto, questo è solo un rattoppo veloce.
void carica_musica (const char *nomefile)
void suona_musica ()
void ferma_musica ()
void leggi_tastiera ()
 Legge lo stato della tastiera e deve essere chiamata prima di usare la funzione tasto_premuto.
bool tasto_premuto (int tasto)
 Verifica se un pulsante è premuto o no nel momento in cui è chiamata.

Variabili

int mouseX
 Variabile globale che contiene le coordinate X del mouse.
int mouseY
 Variabile globale che contiene le coordinate Y del mouse.
bool mouseTD
 Variabile globale che contiene lo stato del bottone destro del mouse (1 premuto, 0 no)
bool mouseTS
 Variabile globale che contiene lo stato del bottone sinistro del mouse (1 premuto, 0 no)

Descrizione dettagliata

Very Simple Graphic Library.

Autore:
Alessandro Bugatti
Versione:
0.1
Data:
Creazione 30/11/2011
Ultima modifica 17/05/2012

Documentazione delle funzioni

void aggiorna_schermo ( )

Aggiorna quello che viene mostrato a schermo.

Osservazioni:
Deve essere chiamata ogni volta che si vuole aggiornare quello che viene mostrato a video, se non viene chiamata tutte le istruzioni di disegno non hanno effetto.
int crea_cerchio ( int  x,
int  y,
int  r,
const Colore c = BIANCO 
)

Crea un oggetto grafico di tipo cerchio, con il centro in posizione (x,y) e di colore specificato. Ritorna un indice che può essere poi utilizzato per effettuare delle operazioni sull'oggetto.

Parametri:
xCoordinata x del centro
yCoordinata y del centro
rRaggio del cerchio
cColore del cerchio, se non specificato è bianco
Restituisce:
Un indice che rappresenta l'oggetto e che deve essere utilizzato quando si vogliono fare delle operazioni su di esso
Osservazioni:
Il cerchio viene solo creato, non disegnato a video: per disegnarlo é necessario usare la funzione disegna_oggetto, passando l'indice dell'oggetto ottenuto da questa funzione
Colore crea_colore ( int  r,
int  g,
int  b 
)

Permette di generare un colore date le sue componenti rosso, verde e blu.

Parametri:
rComponente rossa, deve essere compresa tra 0 e 255
gComponente verde, deve essere compresa tra 0 e 255
bComponente blu, deve essere compresa tra 0 e 255
Restituisce:
Il colore creato, che può essere usato in tutte le funzioni che richiedono un colore.
int crea_disco ( int  x,
int  y,
int  r,
const Colore c = BIANCO 
)

Uguale a crea_cerchio, solo che in questo caso il cerchio ha lo sfondo di colore c (disegna insomma un cerchio pieno). Ritorna un indice che può essere poi utilizzato per effettuare delle operazioni sull'oggetto.

Parametri:
xCoordinata x del centro
yCoordinata y del centro
rRaggio del disco
cColore del disco, se non specificato è bianco
Restituisce:
Un indice che rappresenta l'oggetto e che deve essere utilizzato quando si vogliono fare delle operazioni su di esso
Osservazioni:
Il disco viene solo creato, non disegnato a video: per disegnarlo é necessario usare la funzione disegna_oggetto, passando l'indice dell'oggetto ottenuto da questa funzione
int crea_linea ( int  x1,
int  y1,
int  x2,
int  y2,
const Colore c = BIANCO 
)

Crea un oggetto grafico di tipo linea, con un estremo in posizione x1,y1 e l'altro in posizione x2,y2.

Parametri:
x1Coordinata x del primo estremo
y1Coordinata y del primo estremo
x2Coordinata x del secondo estremo
y2Coordinata y del secondo estremo
cColore della linea
Restituisce:
Un indice che rappresenta l'oggetto e che deve essere utilizzato quando si vogliono fare delle operazioni su di esso
Osservazioni:
La linea viene solo creata, non disegnata a video: per disegnarla é necessario usare la funzione disegna_oggetto, passando l'indice dell'oggetto ottenuto da questa funzione
int crea_rettangolo ( int  x,
int  y,
int  larghezza,
int  altezza,
const Colore c = BIANCO 
)

Crea un oggetto grafico di tipo rettangolo, con base e altezza paralleli agli assi, con l'angolo in alto a sinistra in posizione (x,y) e di colore specificato. Ritorna un indice che può essere poi utilizzato per effettuare delle operazioni sull'oggetto.

Parametri:
xCoordinata x dell'angolo in alto a sinistra
yCoordinata y dell'angolo in alto a sinistra
larghezzaLarghezza del rettangolo
altezzaAltezza del rettangolo
cColore del rettangolo, se non specificato è bianco
Restituisce:
Un indice che rappresenta l'oggetto e che deve essere utilizzato quando si vogliono fare delle operazioni su di esso
Osservazioni:
Il rettangolo viene solo creato, non disegnato a video: per disegnarlo é necessario usare la funzione disegna_oggetto, passando l'indice dell'oggetto ottenuto da questa funzione
int crea_sprite ( int  x,
int  y,
const string &  filename 
)

Crea un oggetto grafico di tipo sprite, cioè immagine in posizione x,y.

Parametri:
xCoordinata x dell'angolo in alto a sinistra
yCoordinata y del'angolo in alto a sinistra
filenameNome del file che si vuole caricare
Restituisce:
Un indice che rappresenta l'oggetto e che deve essere utilizzato quando si vogliono fare delle operazioni su di esso
Osservazioni:
L'immagine viene solo creata, non disegnata a video: per disegnarla é necessario usare la funzione disegna_oggetto, passando l'indice dell'oggetto ottenuto da questa funzione
L'immagine può solo essere in formato PNG
void disegna_oggetti ( )

Disegna a video tutti gli oggetti creati.

Osservazioni:
La funzione è in grado di disegnare qualsiasi tipo di oggetto grafico. Per vedere gli effetti della funzione è comunque necessario chiamare la funzione di aggiornamento dello schermo
void disegna_oggetto ( int  indice_oggetto)

Disegna a video un oggetto di cui viene passato l'indice come parametro.

Parametri:
indice_oggettoL'indice (un numero intero positivo) che viene ottenuto dalla funzione crea_oggetto
Avvertimento:
Se l'indice passato non è un indice valido, la funzione non fa nulla
Osservazioni:
La funzione è in grado di disegnare qualsiasi tipo di oggetto grafico. Per vedere gli effetti della funzione è comunque necessario chiamare la funzione di aggiornamento dello schermo
void disegna_punto ( int  x,
int  y,
const Colore c 
)

Disegna un punto a video di un colore scelto.

Parametri:
xCoordinata x del punto
yCoordinata y del punto
cColore del punto
int fatto ( )

Diventa vera quando viene premuto il tasto ESC o la x gi chiusura della finsetra, falsa altrimenti.

Osservazioni:
Viene usata come condizione d'uscita nel main loop, per terminare il programma quando l'utente preme il tasto ESC
Restituisce:
1 se viene premuto ESC o la X di chiusura della finestra, 0 altrimenti
void imposta_colore_sfondo ( const Colore c = NERO)

Imposta il colore di sfondo.

Osservazioni:
Se non viene specificato il colore, lo sfondo viene riportato al valore di default che è nero
Avvertimento:
Va usata con moderazione perchè è computazionalmente pesante
void inizializza_grafica ( int  larghezza,
int  altezza,
int  fullscreen,
const char *  titolo 
)

Funzione che inizializza la grafica e deve essere chiamata prima di ogni altra.

Parametri:
larghezzaLa larghezza logica dello schermo in cui disegnare. Se l'applicazione non è in fullscreen corrisponde al numero di pixel della larghezza della finestra
altezzaL'altezza logica dello schermo in cui disegnare. Se l'applicazione non è in fullscreen corrisponde al numero di pixel dell'altezza della finestra.
fullscreenIndica se l'applicazione deve essere eseguita in una finestra (fullscreen = 0) oppure a schermo intero (fullscreen = 1)
titoloIl titolo della finestra nel caso l'applicazione non sia in fullscreen altrimenti non ha effetto
Osservazioni:
Valori non corretti di altezza e larghezza fanno fallire l'inizializzazione e di conseguenza il programma.
void leggi_mouse ( )

Legge lo stato del mouse e lo memorizza nelle variabili mouseX, mouseY, mouseTD, mouseTS.

Osservazioni:
Questa funzione deve essere chiamata quando si vuole leggere lo stato del mouse: quando chiamata aggiorna i valori nelle variabili globali mouseX, mouseY, mouseTD, mouseTS
void leggi_stringa ( char *  input,
const char *  messaggio,
int  cancella,
int  x,
int  y,
const Colore c = NERO 
)

Aspetta che l'utente inserisca una stringa da tastiera, ha un comportamento simile alla gets.

Parametri:
inputLa stringa dove verrà memorizzato quanto scritto dall'utente
messaggioIl messaggio che viene mostrato dove l'utente deve inserire l'input
cancellaIndica se quanto scritto deve sparire dopo che viene premuto INVIO oppure rimanere.
xCoordinata x dell'angolo in alto a sinistra del messaggio
yCoordinata y dell'angolo in alto a sinistra del messaggio
cColore del messaggio e dell'input dell'utente
Avvertimento:
Deve essere cura del programmatore che input sia sufficientemente grande da contenere la stringa inserita dall'utente
La funzione è bloccante, quindi finchè l'utente non preme il tasto INVIO il programma rimane bloccato
void leggi_tastiera ( )

Legge lo stato della tastiera e deve essere chiamata prima di usare la funzione tasto_premuto.

Osservazioni:
Questa è una modalità semplice per far leggere se un tasto è premuto o meno (nel momento in cui tasto_premuto è chiamata) e può essere usata ad esempio nei videogiochi quando si vuole sparare a raffica oppure durante i movimenti
Attenzione:
In altri casi è più interessante sapere se un tasto è stato premuto piuttosto che il suo stato attuale (se non è chiara la differenza forse per voi non è importante), allo stato attuale non è prevista una funzione che lo faccia
void muovi_oggetto ( int  x,
int  y,
int  indice_oggetto 
)

Muove un oggetto sullo schermo.

Parametri:
xNuova coordinata x dell'angolo in alto a sinistra
yNuova coordinata y dell'angolo in alto a sinistra
indice_oggettoL'indice (un numero intero positivo) che viene ottenuto dalla funzione crea_oggetto
Avvertimento:
Se l'indice passato non è un indice valido, la funzione non fa nulla
Osservazioni:
La funzione oltre che a muovere l'oggetto ne cancella anche la sua copia nella posizione precedente, disegnando il colore di sfondo. Questo ovviamente richiede che lo sfondo sia uniforme.
void pausa ( )

Mette in pausa il programma, attendendo la pressione di un tasto.

Osservazioni:
Non occupa tempo di CPU.
void pulisci_schermo ( const Colore c = NESSUN_COLORE)

Pulisce lo schermo, colorandolo di un solo colore.

Parametri:
cIl colore con cui verrà ridisegnato lo schermo
Osservazioni:
Se non viene specificato il colore, lo schermo viene riportato al colore di sfondo, che di default è nero
Avvertimento:
Va usata con moderazione perchè è computazionalmente pesante
void ritardo ( int  millisecondi)

Mette in pausa il programma per un certo tempo.

Parametri:
millisecondiDurata della pausa in millisecondi
Osservazioni:
Durante una pausa il programma non è in grado di fare nient'altro
void scrivi ( int  x,
int  y,
const char *  s,
const Colore c = BIANCO 
)

Permette di mostrare una scritta a video.

Parametri:
xCoordinata x dell'angolo in alto a sinistra della scritta
yCoordinata y dell'angolo in alto a sinistra della scritta
sLa scritta da mostrare a video
cColore della scritta: se non viene specificato il valore di default è bianco
Osservazioni:
Allo stato attuale le scritte sono in un unico font con dimensione 8x8.
bool tasto_premuto ( int  tasto)

Verifica se un pulsante è premuto o no nel momento in cui è chiamata.

Parametri:
tastoIl tasto come definito nella libreria SDL, per la tabella completa si rimanda a http://wiki.libsdl.org/moin.cgi/SDLKeycodeLookup. Per le lettere e le cifre basta scrivere SDLK_n, dove n è la lettera o la cifra che interessa
Restituisce:
Vero se tasto è premuto, falso altrimenti.
Attenzione:
Deve essere chiamata dopo leggi_tastiera