Lezione 1 SpaceInvaders 1.0 e 1.1 - mario-mannone-peano-4a/Space-Invaders GitHub Wiki
Prima lezione della creazione Space Invaders by Mario Mannone
Creazione delle classi
Creiamo una classe Space, una classe Intro e una classe denominata SpaceInvaders.
Spiegazione della classe Space
Class Space extends Canvas
La classe Space rappresenta lo spazio all'interno del gioco, dove facciamo muovere i componenti. Estende Canvas perché, si tratta di "componenti dinamici" disegnati attraverso il metodo paint().
Questa classe è la schermata iniziale del videogioco, dove possiamo aggiungere i vari componenti attraverso dei metodi.
I metodi setBackground e setSize configurano le varie impostazioni scritte sulla classe Intro, dove appunto possiamo lavorare.
Il ciclo for permette il movimento dinamico delle scritte da una dimensione grande a un carattere medio-piccolo Perché richiamando il metodo this.repaint() che sarebbe la "forma esplicita" del metodo paint(), e tramite il metodo Thread.sleep(50) lo richiama e "si riduce" la grandezza e l'altezza di quello che andremo a disegnare, cioè il metodo paint().
Il metodo paint imposta il colore della scritta, la disegna e ne modifica il font. Tutto questo per ogni stringa che si va a disegnare.
Spiegazione della classe SpaceInvaders
La classe SpaceInvaders estende JFrame, quindi è una finestra sulla quale possiamo operare.
Richiamando il costruttore all'interno del metodo è possibile dare un nome alla nostra finestra. Possiamo addirittura mettere il comando per chiudere la finestra di gioco e ridimensionare la nostra finestra, che sul mio programma è settata su false quindi l'utente non può ridimensionarla.
La creazione di un'oggetto e fare this.add(intro) permette di aggiungere alla finestra l'implementazione della classe Intro, impacchettarla, renderla visibile, "attivarla" e aggiungere lo spazio.
SpaceInvaders 1.1
La classe Intro
Ho aggiunto l'attributo BufferStrategy che serve a rappresentare il meccanismo con cui organizzare la memoria complessa su un particolare Canvas o Window. Disegna su un singolo buffer posteriore e quindi sposta i contenuti in primo piano (display) in un unico passaggio, copiando i dati o spostando il puntatore video. Spostando il puntatore video si scambiano i buffer in modo che il primo buffer disegnato diventi il buffer anteriore o ciò che è attualmente visualizzato sul dispositivo;
g.dispose() consente di riallocare le risorse utilizzate dal Graphics per altri scopi.
strategy.show() serve a mostrare la strategia del buffer.
Ho aggiunto un'istruzione che serve a disegnare un rettangolo in base alla dimensione della finestra da impostare, modificabile nella classe SpaceInvaders.