Ma mi serviva un gioco semplice per spiegare quanto anticipato da 'IlSocio' in una precedente discussione: L'uso dello schermo suddiviso in caselle.
Lo schermo viene diviso i 24 righe per 24 colonne ottenendo così 576 caselle in queste caselle si possono posizionare i frutti di cui il vermicello è goloso
eventuali ostacoli e il vermicello stesso.
Nonostante un Array semplice può essere visto come una linea continua di caselle....
possiamo anche vederlo come qui riportato, è sempre una linea continua di caselle ma è stata spezzata per evidenziare come si può facilmente trovare e mettere un valore nel suo interno vedendolo come su una scacchiera di 24 righe per 24 colonne.
gr=[0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
];
Col numero 5 indichiamo il frutto che si trova alla 12 riga e alla 13 colonna per individuare la corrispondente posizione nel' Array basta considerare le righe complete 11 e la colonna dove si trova per fare gr[13+11*24] ovvero gr[colonna+(righe_complete*24)]
Quello che voglio far notare è la genialità del sistema di controllo che regge questo gioco:
Penso vi sarete chiesti come fà il programma a ricordarsi tutte le evoluzioni che fa il serpentello e tener conto del fatto che continua ad allungarsi.....
Usando l'Array sopra citato la cosa diventa semplice basta sapere dove è la testa del vermicello e dove si trova la sua parte finale.
Praticamente lo gestiamo con 4 tasti su=1 giù=2 sinistra=3 destra=4 in base al tasto premuto andremo ad aggiungere un quadratino davanti alla testa del vermetto nella direzione indicata dal tasto ed andremo a cancellarne uno alla coda.
Ma come fà la coda a sapere dove è orientata? semplice nel' Array ad ogni casella dove passa la testa si lascia il numero corrispondente all'operazione svolta in modo che quando lo incontra la coda sa che direzione a preso la testa e la segue.
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,5,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Questo è l'Array corrispondente alla figura qui allegata.
Snake.png (1,85K)
Numero di downloads: 5
E per sapere se Snake si è morso basta leggere la casella ove la testa deve spostarsi se contiene 0 va tutto bene se contiene da 1 a 4 si è morso se contiene 5 si mangia il frutto!.
Su questa base a array si possono costruire un infinità di giochi gestiti velocemente e con facilità.
Un esempio? eliminate tutte le caselle a video del vermicello tranne la testa e la coda,
l'asciate la memoria del percorso fatto dalla testa nella matrice e disegnate e cancellate la testa e la coda....così che sembrino due esserini che si spostano sullo schermo.
Cosa esce? un omino che fugge ed un segugio che si trova 10 passi addietro, questo segugio lo insegue ripetendo perfettamente il suo percorso perché fiuta la pista.
Ora ogni 10 movimenti il segugio si avvicina di un passo (quadretto) al'omino.. se continua così lo prende!
Ma per sua fortuna l'omino incontra spesso delle pozzanghere (il frutto del vermicello) ed ogni volta che riesce a bagnarsi i piedi nella pozzanghera il segugio perde terreno perché fatica a fiutarlo...
Vedete come diventa facile creare giochi sempre nuovi leggendo i vari oggetti e posizioni memorizzate nel'array!!!.
Vi allego il sorgente per 240x320 qui:
Snake.txt (4,78K)
Numero di downloads: 21
e qui quello per i 176x208 :
Snake176x208.txt (4,78K)
Numero di downloads: 31
Come al solito non è finito, il gioco continua a incrementare la velocità man mano si mangia un frutto e pure si allunga....
Il gioco termina se sbatte contro i bordi o se si morde.
Tutto il resto:
1) segnare il punteggio.
2) aggiungere bariere nuove ad ogni livello
3) aumentare la disponibilità di frutti ecc.
Lo lascio a voi.......
Vi ricordo che questo è l'ultimo gioco di una certa complessità che presento....
Questo mi serviva per completare la spiegazione degli Array semplici.....
Dopo avervi dato la lenza e li vermetto (Snake) stà a voi divertirvi a pescare..
Buon divertimento.
Ha dimenticavo......nel scopiazzarlo sono rimasto ammirato di come certa gente di ingenio riesce
a rendere semplici le soluzioni di problemi che ai miei occhi risultavano estremamente complesse!!.

Aiuto














Pubblicità