Creazione di una classe SamuraiGame come classe di partenza che conterrà il main;
Estenderà la classe BaseGame. Sul nome della classe se sottolienata in rosso click tasto sinistro sulla lampadina e selezionare addImplements Metods per aggiungere tutti i metodi mancanti ed importati dalla classe Basegame estesa.
Aggiungere il costruttore richiamare il metodo super passando il nome del gioco
Aggiungere il main istanziare la classe creando l'oggetto myGame e richiamare il metodo run dell'oggetto creato "mygame.run();
Il metodo init serve per inizializzare il mondo e va messo dentro la classe SamuraiGame;
Ci sarà inizializzazione del mondo ed il setup del livello;
Per il Livello usare la classe Level.java dove ad ogni numero corrisponde una determinata piastrella; i numeri sono 0 terreno, 1 ostacoli marroni, 2 verdi dove posso passare.
La matrice di interi contiene tutto il livello. La matrice di interi FIRSTLEVEL
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}
con FIRSTLEVEL[0][0] recupero il primo elemento della matrice.
Nella classe Level il costruttore imposta il livello corrente a First; Per passare a quello successivo basta impostare il parametro precedente con il nome del livello successivo.
Dentro il setup del livello creo un nunovo oggetto level; poi informo il render del livello creato in modo che disegna lo sfondo, tramite il metodo setLevel della classe mRender.
Dopo la costruzione del ivello si passa alla costruzione dei Token:
1) creare la classe derivata da Token e creare gli oggetti; Creo il mio samurai che estende la classe token o una sua figlia (AnimableToken); Se ho bisogno di animazione derivo da Animable, altrimenti derivo dalla classe padre Token; Nel caso di samurai estendo AnimableToken; Aggiungo il costruttore con livello come parametro
Aggiungere tutti i medodi derivati ed implementarli con i parametri corretti.
getWidth() e getHeight()
settare a 32, mantere costante perche testato con questi valori
getDefaultAnimationName()
Stringa per settare il nome dell'animazione di default; setto il valore ad "idle" se il protagonista è fermo viene prevista una piccola animazione;
getModelName()
cerca il file contente la grafica per esempio samurai che contiene la grafica.
Logica Animazione
Viene chaimato prima updateInput()
ci va il codice gestione dell'input; lettura mouse e tastiera
vanno analizzati gli input da tastiera
updateInput() controlla se premuto un tasto particoalre A, D; per muovermi a sinistra o destra vuol dire cambiare il segno della variabile movement che può valere +1 o -1;
updateAI()
codice intelligenza artificiale e Movimento.
collisioni con il ivello
andleCollisionWithLevel(
boolean base, boolean left,boolean up, boolean right,..)
quando cambia un valore booleano devo gestire la collisione
collideWith()
collisisioni tra oggetti del mondo;
isBlockable()
serve per il Player Token; si può settare a true o false; di default è settato a true;
isMovable()
se isBlockable() è false isMoveble() non si usa; sono una reazione ad una collisione bloccante che npon vengono utilizzate.
move()
mi dice di quanto mi posso muovere.
Fine della classe token
Setup del Mondo
creiamo il token
Samurai playerToken= new Samurai(level);
aggiungiamo il playerToken al gioco e settare la posizione iniziale.
settare le collisioni
playerToken.setCollisionManager(mCollManager);