Pontozz egy bowlingjátszmát.
A bowling olyan játék, amelyben a játékosok egy nehéz golyót gurítanak el, hogy ledöntsék a háromszög alakban felállított bábukat. Írj kódot, amely nyomon követi egy bowlingjátszma pontszámát.
A játék 10 frame-ből áll. Egy frame egy vagy két golyódobásból áll, a frame kezdetén pedig 10 bábu áll. Egy frame pontozásakor három eset lehetséges.
Nyitott frame az, amikor a frame-re 10-nél kevesebb pont kerül. Ebben az esetben a frame pontszáma a ledöntött bábuk száma.
Spare az, amikor a második dobással mind a tíz bábu ledől. A spare összértéke 10 plusz a következő dobásban ledöntött bábuk száma.
Strike az, amikor az első dobással mind a tíz bábu ledől. A strike összértéke 10 plusz a következő két dobásban ledöntött bábuk száma. Ha egy strike-ot azonnal egy második strike követ, akkor az első strike értékét addig nem lehet meghatározni, amíg a golyót még egyszer el nem dobják.
Íme egy példa három frame-re:
| 1. frame | 2. frame | 3. frame |
|---|---|---|
| X (strike) | 5/ (spare) | 9 0 (nyitott frame) |
Az 1. frame értéke (10 + 5 + 5) = 20
A 2. frame értéke (5 + 5 + 9) = 19
A 3. frame értéke (9 + 0) = 9
Ez azt jelenti, hogy az aktuális összpontszám 48.
A játékban a tizedik frame különleges eset. Ha valaki spare-t vagy strike-ot dob, akkor rendre egy vagy két pótdobást kap. A pótdobások arra szolgálnak, hogy kiszámítsák a 10. frame összértékét. Ha a pótdobáson strike-ot vagy spare-t ér el, az nem ad a játékosnak további pótdobásokat. A 10. frame összértéke a ledöntött bábuk teljes száma.
Egy X1/ tizedik frame (strike és egy spare) esetén az összérték 20.
Egy XXX tizedik frame (három strike) esetén az összérték 30.
Írj kódot, amely nyomon követi egy bowlingjátszma pontszámát. Két műveletet kell támogatnia:
roll(pins : int) minden alkalommal meghívódik, amikor a játékos elgurít egy golyót.
Az argumentum a ledöntött bábuk száma.score() : int csak a játék legvégén hívódik meg.
Visszaadja az adott játék összpontszámát.A játék állapotának egy részét el kell tárolnod.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Pharo nyelvet 50 feladat segítségével, valódi emberi mentorálással, mindez ingyen.