Space Invaders lezione 1 - Gallosimone23/Java-Threads-Space-Invaders GitHub Wiki

Introduzione

L'introduzione è la parte iniziale del progetto, in cui verrà creata una classe principale con il nome di "Space Invaders". Questa classe è fondamentale per creare l'interfaccia grafica del progetto, dunque esse estenderà JFrame in modo da poter creare appunto la finestra.

Dopodichè, per fare in modo di terminare l'esecuzione del programma si dovrà aggiungere al costruttore della Classe SpaceInvaders: " this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); ".

In fine andremo a creare una nuova classe " Space " che estenderà la classe " Canvas ", canvas è la funzione che permetterà alla classe " Space " di disegnare lo spazio profondo.

Step 1 - Schermata statica di introduzione

In questo primo step andremo a creare la classe " Intro ", che estenderà la classe " Space " quindi definiremo il metodo paint() utilizzando " Override " e passeremo l'oggetto " Graphics (g) " andando ad aggiungere elementi grafici alla schermata di gioco. Facendo ciò, agiremo sull'oggetto g e modificheremo il colore e le dimensioni della scritta da noi voluta.

Successivamente, creiamo un oggetto di tipo " Intro " nel costruttore della classe " SpaceInvaders ", così lo aggiungiamo alla nostra intefaccia grafica rendendolo visibile e utilizzando il metodo " run() " avvieremo l'introduzione.

Step 2 - Una schermata di introduzione piu' interessante

Per avere un introduzione visibilmente più bella, ripeteremo il metodo " paint() " più volte andandosi a rimpicciolire sempre più. Così creiamo l'attributo " i " nella classe " Intro " e modifichiamo il metodo " run() " per fare in modo che resetti lo sfondo della schermata rendendola nera e utilizzando un ciclo " for " con ,l'attributo che decrementerà , in cui richiameremo il " repaint() ". Ma per far sì che le dimensioni si riducano sempre più piccole, si modifica il metodo " paint() ".

Purtroppo però, il nostro "Videogame" presenterà ancora un leggero sfarfallio.

Step 3 - Eliminazione dello sfarfallio

Per eliminare il nostro ultimo problema andremo ad impostare la nostra principale schermata di introduzione su due teli (canvas) differenti, al fine di sostituire in seguito un canvas con il successivo risolvendo il fastidioso sfarfallio.

Utilizziamo il " BufferStrategy " della classe " Canvas " in cui creeremo un oggetto di tipo " BufferStrategy (strategy) " nella classe " Intro ". Successivamete inseriremo, nel metodo run(), i comandi "createBufferStrategy(2)" e "strategy = getBufferStrategy()" per creare due buffer che conterranno un canvas ciascuno.

Quindi si utilizza il comando "Graphics2D g = (Graphics2D) strategy.getDrawGraphics()" nel metodo " paint ", con cui si chiede il buffer in cui comporre la nuova immagine.

Dopo aver finito di apportare tutte le modifiche necessarie al nostro disegno, si usa il comando " g.dispose " che rilascia le risorse create per la composizione dell'immagine e, subito dopo " strategy.show " per visualizzare il tutto sullo schermo.