Domanda

Sto programmando una semplice applicazione console C#.

La specifica è:

Un gioco è composto da dieci fotogrammi, che iniziano con un rack completo di dieci birilli.In ogni frame, hai due lanci della palla, in cui abbattere il maggior numero possibile di dieci birilli.Se abbatti tutti i birilli con la prima biglia, si chiama strike.Il punteggio non viene sommato subito perché per uno strike ricevi come bonus il valore delle due palline successive.Ad esempio, se ottieni uno strike nel primo frame, poi un 7 e un 1 nel secondo frame, otterrai 18 (10+7+1) per il primo frame e 8 per il secondo frame, per un totale di 26 dopo due fotogrammi.Se si abbattono alcuni birilli della prima biglia e si abbattono i restanti birilli della seconda biglia, si parla di spare.Ancora una volta, il punteggio non viene aggiunto immediatamente perché per uno spare, ottieni i valori della pallina successiva come bonus.Ad esempio, se ottieni uno spare nel primo frame, diciamo un 6 e un 4, e poi ottieni un 8 e un 1 nel secondo frame, otterrai 18 (6+4+8) per il primo frame e 9 per il secondo fotogramma, per un totale di 27 dopo due fotogrammi.

Ho capito come scrivere il codice ecc.eccetera.Tuttavia, non riesco proprio a capire quale sia il modo migliore per utilizzare questo sistema di punteggio e ho bisogno di qualche consiglio.Ovviamente verrà creato un nuovo oggetto per ogni giocatore, tuttavia non sono sicuro di come aggirare quello che inizialmente sembrava un semplice problema di programmazione.

Qualsiasi aiuto sarebbe molto apprezzato.

Saluti

È stato utile?

Soluzione

Nel bowling, scioperi e pezzi di ricambio sono chiamati "segni". Usa questo!

enum Marks { Open, Spare, Strike };

In questo modo, puoi determinare quale tipo di segno hai per fotogramma.Dopo che una palla è stata lanciata, controlla gli ultimi due fotogrammi e aggiorna i loro punteggi.Quindi somma i punteggi.

Un'altra nota:Se mostri il punteggio fotogramma per fotogramma, non mostrare il punteggio del fotogramma in una serie di colpi (ad esempio, quattro colpi di fila non dovrebbero comportare la visualizzazione di "30" nel fotogramma 1).Attendere una riserva o un'apertura per visualizzare i totali.Fare qualcosa di diverso è un punteggio improprio e mi dà fastidio quando i videogiochi non lo riconoscono.

Altri suggerimenti

Bene, se vuoi una discussione davvero approfondita che tratti OOP e TDD per un gioco di bowling, suggerirei di leggere l'intero articolo:

http://www.objectmentor.com/resources/articles/xpepisode.htm

Altrimenti, puoi semplicemente scorrere fino in fondo e vedere come l'hanno implementato.

Quando lavoro con problemi come questi, ho trovato utile l'uso dei flag.Per flag intendo piccole variabili booleane o int che ti dicono semplicemente se qualcosa è vero o falso.Come in:

bool isStrike;
bool isSpare;

Inserisci queste variabili nel tuo oggetto e quando la persona riceve uno strike imposta Strike su true.

Quando arriva il momento di calcolare i punteggi, puoi modificare il tuo sistema di calcolo controllando questi flag.

if(isStrike)
    // do not calculate the score until the other two bowls are made.
if(isSpare)
    // do not calculate the score until one more bowl is made

Quindi aggiorni il tuo punteggio mantenendo le variabili per rifletterle dopo quelle ciotole.

Nota:Non so come funzioni il conteggio del punteggio nel bowling, ma penso che le informazioni qui siano abbastanza generali.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top