Come evitare di recuperare ulteriori informazioni durante l'istanziazione di oggetti

1

Sto creando un gioco HTML5 usando javascript e ho avuto alcuni problemi durante la prima istanziazione degli oggetti della scena.

Scenario

  • Motore di gioco 2d autoprodotto che supporta più tipi di oggetti.

"Glossario"

  • Un oggetto è un'entità legata alla scena ed è sempre un'estensione di un modello , che è astratto.
  • Una scena contiene una raccolta di oggetti.

Problema

Quando istanzio la scena del gioco, prima carica i dati della scena dalla memoria locale, quindi procedo a creare un'istanza dei suoi oggetti. Il problema è che il tipo dell'oggetto di gioco (sprite, text ...) è dichiarato nel modello, non nell'oggetto (che ha un riferimento al modello). In questo modo devo recuperare il modello dell'oggetto per sapere quale tipo di oggetto di gioco ho bisogno di instaziare, e davvero non mi piace.
Potrei salvare il tipo dell'oggetto come una proprietà dell'oggetto, ma sarebbe logicamente sbagliato: non dovrei essere in grado di ridefinire il tipo di oggetto deciso nel modello perché sarebbe facilmente interrompere l'implementazione dell'oggetto di gioco dichiarato nel modello. Quindi, non ha senso salvare il tipo dell'oggetto nell'oggetto stesso dato che il modello ha già il compito di dichiararlo.
Quindi, forse ho bisogno di una nuova architettura ...

Come posso evitare di recuperare il modello senza rompere la logica di 'questo è dove dovrei salvare questa proprietà'?
Se la domanda non è chiara, forniscimi un feedback: sarei felice di migliorarlo.

    
posta fedeTibaldo 01.01.2017 - 20:31
fonte

1 risposta

0

Semplice, smetti di pensare agli sprite o al testo come i tipi dell'oggetto del gioco nel modello. Questi tipi sono responsabilità della vista.

Diciamo che questo gioco sono gli scacchi. Il lavoro dei modelli è conoscere lo stato della tavola. I tipi qui dovrebbero essere cose come: King, Knight, Pawn. Il modello non dovrebbe sapere che lo stai presentando con sprite, o testo, o anche in 2D. Il suo compito è sapere dove sono i pezzi.

Dovresti essere in grado di schiaffeggiare viste diverse su questo modello per presentarlo in modi diversi. Il modello non dovrebbe cambiare quando la vista lo fa.

Non devi recuperare dal modello. Il modello non dovrebbe sapere nulla sulla vista ma è libero di parlare direttamente con un'interfaccia vista. Il modello OWNS questa interfaccia. Non lo implementa. La vista lo fa. Qualunque cosa accada, decide come viene presentato il gioco.

    
risposta data 01.01.2017 - 22:52
fonte

Leggi altre domande sui tag