2012-08-30 17 views
5

Non si tratta tanto di una questione tecnica quanto di una domanda di stile. Sto facendo una generalizzazione del solitario per peg per Android, e ci saranno diversi livelli che puoi giocare. Ognuno di loro avrà diverse configurazioni iniziali per la tavola, diversi gruppi di mosse che è possibile fare, ecc. In questo momento l'ho programmato con un singolo livello base, e tutte quelle variabili sono inizialmente inizializzate in quel modo.Come si memorizzano i livelli in un gioco Android?

Aggiungo un file di testo che ha tutti i diversi tipi di livelli e lo programma per leggerlo dal file di testo? Aggiungo una classe di livello con tutte queste informazioni da ogni livello e creo diversi oggetti di livello quando si inizializza? Creo una classe di livello, ma la inizializzo leggendo i livelli da un file di testo?

Sono sicuro che tutti i metodi funzionerebbero, ma esiste un metodo standard per farlo? Non ho mai programmato nulla del genere prima d'ora.

+1

Lo farei per XML, quindi caricarlo in una classe 'Level'. Ma forse sono solo io. – Eric

+0

L'analisi XML è molto lenta su Android. –

+0

Evita XML, non conosco Android ma dovrebbe esserci un altro modo per serializzare la tua classe di livello, eliminando altri dati grezzi. Non ne hai parlato ma hai bisogno di un editor di livelli anche semplice. Una volta che lo hai, la memorizzazione dei dati e il recupero non è difficile. – bokan

risposta

4

Non c'è davvero un modo standard per fare ciò che si desidera, in realtà dipende dalla complessità dei dati necessari per l'inizializzazione di ogni livello. Questi dati cambieranno o sono statici? Ha senso averlo organizzato correttamente e separato dalla logica del codice? Queste sono domande a cui devi rispondere, perché è il tuo gioco e non conosciamo tutti i dettagli.

Dato che, si decide se archiviare tali dati in un file XML, file TXT o altro. Non c'è davvero una risposta corretta. Ma dovresti (IMO) avere sempre una sorta di classe Level, questo è il modo giusto per entrare in un contesto OOP. Il costruttore potrebbe avere i parametri necessari per costruire il livello da XML/TXT/qualunque sia il dato. Potrebbe anche avere tutti i parametri di livello in modo da poter inizializzare tutto tramite codice, se necessario per qualche motivo. E, naturalmente, non dimenticare i metodi getter/setter per tutti quegli attributi di livello.

Una cosa penso che lo non dovrebbe fare è "creare diversi oggetti di Livello durante l'inizializzazione". Dovresti separare la logica di gioco dai dati, non dovresti mescolare entrambi in questo modo.

Probabilmente non è la risposta che stavi cercando, ma dipende principalmente da te.

+0

I dati sono statici. Se non faccio gli oggetti quando si inizializza, quando li faccio? Vuoi dire che non dovrei avere tutti i parametri di livello scritti in modo esplicito nell'inizializzazione? Perché ho bisogno dei metodi di setter? Non dovrei semplicemente usare il costruttore? – DanielLC

+0

Ciò che intendo è ciò che pensavi intendessi;) Potresti, tuttavia, che a scopi di debug, va bene. Ma per il tuo codice finale, dovresti separare la logica di gioco dai dati. È solo una buona pratica. Se non hai bisogno di metodi setter, non usarli, ero generico.Ma forse potrebbero tornare utili se è necessario modificarne uno per scopi di debug. Questo dipende da te, non fa molta differenza. –

2

Il modo in cui io e i miei amici lo facciamo è memorizzare gli attributi di livello in un database, quindi a seconda del livello selezionato dall'utente, leggiamo il database e lo carichiamo nella nostra classe di livello che crea il livello per l'utente !

Modifica

Siamo principianti così, ma è stato molto facile fare nuovi livelli dopo il primo è stato fatto. =] Tanto più che tutto ciò che dobbiamo fare è aggiungere una riga al nostro database e inserire i valori.

Problemi correlati