Calcule le score d'une partie de bowling.
Le bowling est un jeu où les joueurs lancent une boule lourde pour faire tomber des quilles disposées en triangle. Écris du code pour tenir le score d'une partie de bowling.
Une partie se compose de 10 frames. Une frame se compose d'un ou deux lancers de boule, avec 10 quilles debout au début de la frame. Trois cas se présentent pour le calcul du score d'une frame.
Une frame ouverte est une frame dont le score enregistré est inférieur à 10. Le score de cette frame est alors le nombre de quilles tombées.
Un spare correspond au cas où les dix quilles sont toutes tombées au deuxième lancer. La valeur totale d'un spare est de 10 plus le nombre de quilles tombées lors du lancer suivant.
Un strike correspond au cas où les dix quilles sont toutes tombées au premier lancer. La valeur totale d'un strike est de 10 plus le nombre de quilles tombées lors des deux lancers suivants. Si un strike est immédiatement suivi d'un second strike, la valeur du premier strike ne peut être déterminée qu'après un nouveau lancer de boule.
Voici un exemple sur trois frames :
| Frame 1 | Frame 2 | Frame 3 |
|---|---|---|
| X (strike) | 5/ (spare) | 9 0 (frame ouverte) |
Frame 1 vaut (10 + 5 + 5) = 20
Frame 2 vaut (5 + 5 + 9) = 19
Frame 3 vaut (9 + 0) = 9
Le total cumulé est donc de 48.
La 10e frame d'une partie est un cas particulier. Si un joueur réalise un spare ou un strike, il obtient respectivement une ou deux boules de remplissage. Les boules de remplissage servent à calculer le total de la 10e frame. Réaliser un strike ou un spare sur une boule de remplissage ne donne pas de boule de remplissage supplémentaire au joueur. La valeur totale de la 10e frame est le nombre total de quilles tombées.
Pour une 10e frame de X1/ (un strike et un spare), la valeur totale est de 20.
Pour une 10e frame de XXX (trois strikes), la valeur totale est de 30.
Écris du code pour tenir le score d'une partie de bowling. Il doit prendre en charge deux opérations :
roll(pins : int) est appelée chaque fois que le joueur lance une boule.
L'argument est le nombre de quilles tombées.score() : int n'est appelée qu'à la toute fin de la partie.
Elle renvoie le score total de cette partie.Il te faudra stocker une partie de l'état du jeu.
Inscris-toi sur Exercism pour apprendre et maîtriser Pharo avec 50 exercices, et un vrai mentorat humain, le tout gratuitement.