Premi “Invio” per saltare al contenuto

Realizzare Snake Game [parte 2]

Se avete seguito la parte 1 di questo tutorial avete già un Package pronto, chiamato snake e una Classe chiamata Square che ha il solo compito di disegnare un quadrato.

Questa lezione è molto breve e serve a capire come usare la Classe che abbiamo creato precedentemente.

Aprite il vostro editor di testo e scrivete questo codice:

package snake {
    import flash.display.Sprite;
    public class Wall extends Sprite {
        private var _b:Square;
        public function Wall() {
            _b = new Square(0x000000)
            this.addChild(_b);
        }
        public function get w() {
            return _b.w;
        }
        public function get h() {
            return _b.h;
        }
    }
}

Questa è la nostra Classe Wall e rappresenta un mattoncino del muro utilizzato nel gioco.

Come abbiamo imparato nella lezione precedente è necessario salvare questo file con il nome Wall.as, ricordate che il nome del file deve sempre essere identico al nome della Classe.

Le parti su cui è necessario soffermarci sono soltanto due, la prima è questa:

        private var _b:Square;

Dichiarando una Variabile Privata di nome _b le assegnamo come tipo Square. Questo perché la Classe Square è già a nostra disposizione, infatti fa parte dello stesso Package della Classe Wall. Se la Classe Square avesse fatto parte di un Package differente sarebbe stato necessario importarla (come abbiamo fatto per la Classe Sprite).

La seconda parte importante è questa:

        public function get w() {
            return _b.w;
        }
        public function get h() {
            return _b.h;
        }

Abbiamo già visto nella lezione precedente che cosa è un Getter, serve per accedere alle Proprietà Private di una Classe.

Questi due Getter mettono a disposizione i valori di w e di h della variabile _b, che è un’Istanza della Classe Square. Non sarebbe possibile accedere in altro modo a queste due variabili dall’esterno della Classe Wall perché la variabile _b è Privata, quindi il suo utilizzo è riservato all’interno di questa Classe.

Se adesso provassimo questa Classe il risultato non sarebbe diverso da quello della lezione precedente, vedremmo un quadrato nero in alto a sinistra. La differenza sta nel fatto che il quadratino che si vedeva prima era un’Istanza di Square, quello di adesso è un’Istanza di Wall che contiene un’Istanza di Square.

Questo concetto diventa più chiaro se cerchiamo di visualizzare il nostro lavoro come se fosse composto da livelli sovrapposti:

Tutto chiaro, no?

Allo stesso identico modo possiamo creare una Classe che serva a disegnare le ciliegie che il nostro serpente dovrà mangiare durante il gioco.

La Classe Cherry è praticamente identica alla Classe Wall… al momento non è previsto nessun comportamento particolare per le Ciliegie o per le Mura, però è bene prevedere una Classe per ogni cosa, così da poter intervenire successivamente.

Ecco la Classe Cherry, che va salvata con il nome Cherry.as:

package snake {
    import flash.display.Sprite;
    public class Cherry extends Sprite {
        private var _b:Square;
        public function Cherry() {
            _b = new Square(0xFF3333)
            this.addChild(_b);
        }
        public function get w() {
            return _b.w;
        }
        public function get h() {
            return _b.h;
        }
    }
}

Nella prossima lezione creeremo una Classe un po’ più complessa: è ora di fare sul serio!

loading spinner

Aggiungi il primo commento

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.