Bowling

Bowling

Medio

Istruzioni

Assegna il punteggio a una partita di bowling.

Il bowling è un gioco in cui i giocatori lanciano una palla pesante per abbattere dei birilli disposti a triangolo. Scrivi il codice per tenere traccia del punteggio di una partita di bowling.

Come si calcola il punteggio

La partita è composta da 10 frame. Un frame è formato da uno o due lanci della palla, con 10 birilli in piedi all'inizio del frame. Ci sono tre casi per il calcolo del punteggio di un frame.

  • Un frame aperto è un frame in cui si registra un punteggio inferiore a 10. In questo caso il punteggio del frame è il numero di birilli abbattuti.

  • Uno spare è un frame in cui tutti e dieci i birilli vengono abbattuti con il secondo lancio. Il valore totale di uno spare è 10 più il numero di birilli abbattuti nel lancio successivo.

  • Uno strike è un frame in cui tutti e dieci i birilli vengono abbattuti con il primo lancio. Il valore totale di uno strike è 10 più il numero di birilli abbattuti nei due lanci successivi. Se a uno strike segue immediatamente un secondo strike, il valore del primo strike non può essere determinato finché la palla non viene lanciata un'altra volta.

Ecco un esempio con tre frame:

Frame 1 Frame 2 Frame 3
X (strike) 5/ (spare) 9 0 (frame aperto)

Il frame 1 è (10 + 5 + 5) = 20

Il frame 2 è (5 + 5 + 9) = 19

Il frame 3 è (9 + 0) = 9

Questo significa che il totale corrente è 48.

Il decimo frame è un caso speciale. Se si fa uno spare o uno strike, si ottengono rispettivamente uno o due tiri supplementari. I tiri supplementari servono a calcolare il totale del decimo frame. Fare strike o spare con il tiro supplementare non dà al giocatore altri tiri supplementari. Il valore totale del decimo frame è il numero totale di birilli abbattuti.

Per un decimo frame di X1/ (strike e spare), il valore totale è 20.

Per un decimo frame di XXX (tre strike), il valore totale è 30.

Requisiti

Scrivi il codice per tenere traccia del punteggio di una partita di bowling. Deve supportare due operazioni:

  • roll(pins : int) viene chiamata ogni volta che il giocatore lancia la palla. L'argomento è il numero di birilli abbattuti.
  • score() : int viene chiamata solo alla fine della partita. Restituisce il punteggio totale di quella partita.

Implementazione

Dovrai memorizzare alcune informazioni sullo stato del gioco.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Pharo Exercism

Vuoi iniziare Bowling?

Iscriviti a Exercism per imparare e padroneggiare Pharo con 50 esercizi e il mentoring di persone reali, tutto gratis.