Programmazione orientata agli oggetti - subobject vs globals (use case) [closed]

0

Sto sviluppando un gioco simile a Nethack, e vorrei un consiglio su come avvicinarmi alla parte di design. Per ora ho classe come Location, Npc, Item ecc. Ma ho un problema su come accedere facilmente a parti del percorso.

Diciamo che ho un oggetto Door dentro (non ereditato). Se il giocatore è all'interno del luogo, è facile verificare se la porta è aperta. Ma d'altra parte (ho avuto questa soluzione con la mia precedente implementazione non-object) avevo uno script che a 0600 apriva tutti i negozi. Ma ora ho bisogno di scorrere tutte le posizioni, controllare se ci sono porte dentro e aprirle se la posizione è un negozio. È davvero un modo ottimizzato per farlo?

Potrei anche fare un global (come il singleton) con gli stati delle porte e scorrerli rapidamente - ma non sarebbe un OOP.

Quali sono le possibilità qui?

    
posta user203418 09.11.2015 - 16:49
fonte

1 risposta

1

Il solito modo di farlo in un modo orientato agli oggetti è di mettere un riferimento a ciascuno dei negozi in una Shop Collection, in modo che tu debba solo scorrere iterativamente attraverso quelli specificatamente.

var shops = new list<Location>();

// When you add a location
if (location.Type = LocationTypes.Shop)
    shops.Add(location);

// Open the shop doors
foreach(var shop in shops)
    shop.OpenDoors();

Ma dovresti prima cronometrare il codice per vedere se hai bisogno di questa ottimizzazione. Potresti scoprire che iterare attraverso tutte le posizioni è già abbastanza veloce.

    
risposta data 09.11.2015 - 17:09
fonte

Leggi altre domande sui tag