mercoledì 4 maggio 2011

FACCIAMO UN (VIDEO)GIOCO? - PARTE 4


Nei precedenti articoli abbiamo creato la mappa del labirinto e la schermata di visualizzazione in soggettiva; ora dobbiamo legare questi due elementi per poter finalmente ottenere qualche risultato concreto!

Per farlo ci servono due informazioni: quale casella stiamo occupando e in quale direzione stiamo guardando. Il programma sarà quindi impostato in modo da comunicare al motore grafico innanzitutto le coordinate (X, Y) della nostra posizione attuale e la direzione (N, S, W, E) verso cui siamo rivolti.

Il secondo passaggio è quello di sovrapporre alla mappa del labirinto quella delle celle visibili, in modo da determinare quali celle del labirinto sono appunto visibili. Il risultato naturalmente è diverso a seconda che l'osservatore sia orientato in una direzione piuttosto che in un'altra, come mostrato dall'immagine in alto, all'inizio dell'articolo.

Il terzo ed ultimo passaggio è quello che serve per mostrare solo le pareti visibili, non tutte. Ogni cella "piena" è associata ad 1 o 2 pareti, come mostrato dall'immagine qui sotto (in blu le pareti, in rosso il campo visivo)...


...quindi le pareti corrispondenti alle celle piene dovranno essere mostrate, mentre quelle corrispondenti alle celle vuote dovranno essere nascoste.
Questo sistema, anche se produce un risultato visivamente corretto, in realtà è inefficiente, perchè non distingue tra le pareti effettivamente visibili e quelle nascoste da altre pareti. Fortunatamente, per i nostri scopi la potenza di calcolo dei computer compensa largamente la presenza di calcoli superflui, quindi possiamo ignorare il difetto ed evitare di correggerlo (lo so, sono pigro ^__^).

Un procedimento analogo può essere seguito per visualizzare gli eventuali oggetti che occupano i corridoi davanti a noi: se una cella visibile contiene un oggetto, il corrispondente oggetto viene mostrato anche nella visualizzazione in soggettiva; altrimenti non viene mostrato nulla.

Nel prossimo articolo faremo un ulteriore passo avanti... anzi più di un passo, visto che saremo finalmente in grado di muoverci all'interno del labirinto!

Nessun commento: