Creare videogiochi con java (parte 3)

Terzo di una serie di articoli sulle basi della libreria GTGE, una libreria java completamente gratuita per creare videogiochi 2d portabili e di impatto

Eccoci finalmente alla terza parte di questa miniguida a GTGE. In questo appuntamento vedremo come gestire le collisioni all’interno del nostro videogioco. Il sistema di gestione delle collisioni presente in GTGE è molto semplice (e allo stesso tempo flessibile) e non richiede continui controlli sulla posizione degli Sprite e sulle loro dimensioni. Il tutto si basa sul concetto di gruppo.

Grazie ai gruppi è possibile tenere separati i diversi elementi del nostro gioco semplificandone la gestione e alleggerendo il codice. Vediamo prima un pezzo di codice che non fa uso di gruppi

Questo codice non fa altro che creare 9 Sprite e mostrarli a schermo. Se gli Sprite fossero in numero molto maggiore la situazione sarebbe difficile da gestire. Per questo si utilizzano gruppi:

I due programmi fanno la stessa cosa ma il secondo è più compatto e meno prolisso del primo. Il tutto si riduce a lavorare sui gruppi e non più sugli Sprite: aggiungiamo gli Sprite ad un gruppo ed anzichè dover aggiornare ogni singolo Sprite aggiorniamo il gruppo in cui si trova. In questo modo il codice di update e render diventa più leggibile e facilmente mantenibile.

I maggiori vantaggi nell’utilizzo dei gruppi si hano quando se ne utilizzano diversi. Ovviamente i vari gruppi devono essere creati con criterio, non a casaccio. Ad esempio, potremmo creare un gruppo per il personaggio, un gruppo per gli elementi a livello del terreno, un gruppo per i nemici, un gruppo per gli elementi sopra il terreno e così via, come in questo esempio:

Perchè utilizzare tutti questi gruppi? Semplice, ci facilitiamo la gestione delle collisioni!

In GTGE infatti le collisioni vengono rilevate tra gruppi. In questo modo la gestione diventa semplice. Ci sono diverse classi di collisioni, ognuna adatta a rilevare un certo tipo di collisione:

  • BasicCollisionGroup controlla solo se la collisione c’è stata o meno
  • CollisionGroup controlla se la collisione c’è stata o meno e fornisce qualche informazione supplementare
  • PreciseCollisionGroup da utilizzare quando occorre sapere con precisione la posizione degli Sprite e altre informazioni
  • AdvanceCollisionGroup è un sistema avanzato di rilevamento, registra collisioni verso diversi Sprite contemporaneamente e con molta precisione
  • CollisionBounds registra le collisioni coi i bordi dello schermo

 

Ma come si gestiscono le collisioni? Molto semplice, basta estendere la classe di collisione che ci interessa e dare un corpo al metodo collide.

Dopo di che dobbiamo mettere in ascolto il rilevatore di collisioni:

Ecco il codice completo:

Se utilizziamo molti (troppi!) gruppi il codice potrebbe diventare presto illeggibile. Si può risolvere questo problema creando gruppi di gruppi. La classe PlayField serve proprio a questo

E con questo si concludere questa miniguida alle basi della libreria GTGE. Spulciando tra la documentazione (formato javadoc) troverete tante informazioni utili per creare facilmente i vostri giochi mentre sul sito ufficiale del progetto sono presenti diversi giochi già pronti liberamente scaricabili. Buon lavoro!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *