Hai bisogno di aiuto per chiarire il design di un gioco per Android

2

Svilupperò un gioco Kakuro (Cross-Sums) per Android, e ho ottenuto l'algoritmo giusto.

Ma non riesco a ottenere la parte di interazione dell'utente giusta- cioè il puzzle è molto grande. Quindi viene mostrata solo una porzione alla volta per un utente a seconda sul proprio dispositivo (ad esempio: smartphone HVGA vs tablet XGA). Dovrebbe essere scorrevole.

Per renderlo più chiaro, guarda le immagini qui sotto:

Quindi, cosa sto chiedendo: conosci un metodo adeguato per avvicinarti a questo? Voglio dire, come un design o una struttura che realizzerà questo tipo di comportamento?

Tieni presente che sono completamente nuovo alla programmazione di giochi e non so nulla di tele, ecc. (ma ho esperienza nello sviluppo di applicazioni). Quindi qualsiasi aiuto è davvero apprezzato.

    
posta Roshnal 17.02.2012 - 14:45
fonte

1 risposta

3

Per risolvere il tuo problema, devi pensare al tuo gioco in termini di "spazi" diversi.

Per prima cosa, parliamo di "worldspace". Se fai finta di avere un dispositivo sufficientemente ampio e alto su cui puoi eseguire il rendering, puoi rendere l'intera griglia di celle.

Per un esempio più concreto, se la tua griglia è 100x100 celle e ogni cella è 16x16 pixel, avrai bisogno di uno schermo di 1600x1600 pixel.

Se disponevi di un dispositivo del genere, potresti facilmente rendere il tutto.

Non lo fai, ed è per questo che sei qui. Il dispositivo è solo un numero particolare di pixel di larghezza e altezza. Questo è il tuo "spazio dei dispositivi". Lo schermo di uno smartphone avrà uno spazio diverso da un tablet.

Se hai a che fare solo con lo scrolling, allora devi solo tenere traccia di un singolo punto che mappa un angolo (tipicamente l'angolo in alto a sinistra) di devicespace in worldspace. Questo è un punto di ancoraggio.

Se si utilizza qualcosa come OpenGL, è possibile farlo abbastanza facilmente con le matrici, ma non si fa nemmeno male sapere come utilizzare l'algebra 2d.

Quando si scorre lo spazio del mondo, si modifica semplicemente il punto di ancoraggio e si ricrea l'area coperta da devicepace, non il mondo intero (sarebbe uno spreco). Fortunatamente, con una griglia quadrata, è abbastanza semplice determinare quali celle della griglia devono essere renderizzate, poiché si prende il punto di ancoraggio, si divide per l'altezza e la larghezza della cella e si avvia il rendering lì, fermandosi nell'angolo opposto.

Il punto di ancoraggio ha dei limiti ben definiti. Se è (0,0) e viene usato l'angolo in alto a sinistra, l'angolo in basso a destra è a (punto di vista, altezza del dispositivo).

Quando si scorre, il punto di ancoraggio non deve andare oltre (larghezza di deviazione del mondo, altezza del dispositivo di altezza del mondo), e quindi come risultato, questo e (0,0) sono i limiti per un diverso tipo di spazio chiamato "spazio di ancoraggio" .

Per aggiungere lo zoom, c'è un po 'di più ad esso, ma si basa sulle basi qui, c'è semplicemente un altro spazio intermedio, ma per ora ti lascerò con la base dello scorrimento.

Buona fortuna.

    
risposta data 17.02.2012 - 15:52
fonte

Leggi altre domande sui tag