Ingresso tastiera console OOP

3

Sto cercando di creare un gioco basato su console molto semplice con l'obiettivo di utilizzare OOP invece di programmazione procedurale perché intendo creare su quel codice progetti più complessi.

Mi chiedo se esiste un modello di progettazione che gestisca bene questo caso d'uso:

  • There is a Player class with a MakeMove() method interacting with the board game.

Il metodo MakeMove() deve in qualche modo ottenere l'input dell'utente ancora non voglio codificarlo nella classe Player in quanto ciò ridurrebbe l'accoppiamento di coesione e aumento.

Stavo pensando che forse alcuni controller di classe gestiscono la sequenza di eventi e quindi le chiamate all'input da tastiera. Tuttavia, quella classe controller dovrebbe essere in grado di gestire in modo diverso le sottoclassi di Player (ad esempio la classe AI non richiede l'input da tastiera).

Pensieri?

    
posta ApplePie 05.11.2013 - 03:40
fonte

1 risposta

1

Per il lavoro sull'interfaccia utente web, sono appassionato di comporre l'interazione user-input / HTML-DOM come componente facilmente disaccoppiato di un dato oggetto. Solitamente prendendo tutto il .click e .focus e sfocatura roba per dire una casella combinata e facendola attivare le opzioni revealOptions dell'oggetto combinatore o selectOption o cosa hai. In questo modo posso attivare azioni / ascoltare eventi sull'oggetto con un buon dettaglio, indipendente e facilmente comprensibile dall'API di Web Devs non-UI, pur avendo tutto l'oggetto raggruppato nello stesso spazio facilmente trasferito.

Essenzialmente, il tuo Player avrebbe un oggetto interno che potrebbe essere facilmente scambiato e il cui compito è comunicare all'ambiente e allo stesso modo dare al giocatore i modi per rispondere alle modifiche dell'ambiente in un modo generico. In web-ui JS quell'oggetto interal ascolterà gli eventi del browser e quindi i metodi di trigger dell'API dell'oggetto esterno di cui ci occupiamo internamente. Quindi ascolterebbe gli eventi generici dell'oggetto esterno e gestirà tutta la spazzatura di trasformazione HTML che il ragazzo che manipola l'oggetto giocatore non vuole agitarsi solo per spostare un correttore o qualcosa del genere.

In pratica sono due insiemi di API e ascoltatori usati per disaccoppiare ma è tutto collegato alla stessa cosa. Se vuoi eseguire l'override per un nuovo ambiente, puoi semplicemente rendere quell'oggetto interno qualcosa che può essere sostituito quando ne consegni uno diverso nel costruttore o nella classe o qualsiasi altra cosa ...

    
risposta data 05.11.2013 - 05:34
fonte

Leggi altre domande sui tag