Jullie kennen het spel “Darts” waarbij je met pijltjes naar een bord werpt. Het aantal punten dat je scoort hangt af van de plaats waar het pijltje in het bord belandt. Het dartbord is verdeeld in sectoren. De getallen langs de rand geven het aantal punten aan voor een pijltje in de desbetreffende sector. De dartscore van een pijl wordt bepaald door de sector en de ring waarin de pijl belandt:

Per beurt mag je 3x gooien en de totale punten van die beurt is de som van de 3 worpen.
Score-notatie bij darts
Afspraken voor de scorenotatie van één pijl (van binnen naar buiten):
- BULL: het centrum van het dartbord (rode cirkel in het midden) levert 50 punten op.
- getal : de behaalde score. Voor de single bull of outer bullseye (groene ring in het midden) is dit 25. Voor de twee bredere ringen(afwisselend zwart en wit) is dit het aantal punten voor die sector, zoals aangeduid op de rand van het bord.
- Tgetal: in de kleinste smalle ring, de triple ring (afwisselend rood en groen). Deze zone levert drie maal het puntenaantal op dat vermeld staat op de rand van het bord. Om aan te geven dat de score verdriedubbeld, worden de punten van de sector voorafgegaan door de letter T(riple), bijvoorbeeld T14 = 42.
- Dgetal: in de buitenste smalle ring, de double ring (afwisselend rood en groen). Als de pijl in dit gebied landt, levert dit twee keer het aantal punten op dat bij het betreffende vak staat. Om aan te geven dat de score verdubbeld, worden de punten van de sector voorafgegaan door de letter D(ouble), bijvoorbeeld D8 = 16.
- MISS: de buitenste zwarte rand (waar de cijfers staan), naast het bord of als de dart uit het bord valt. Dit levert geen punten op.
Opdracht
Schrijf een programma dat aan de gebruiker vraagt om 3x een geldige scores in te geven volgens de score-notitie (zie hoger). Bij een incorrect ingave wordt er een error opgeroepen die je opvangt en afhandelt met een print-opdracht. De vraagzin wordt dan opnieuw gesteld. Na de ingave van 3 correcte scores print je het totaal van punten af voor die beurt als volgt:
Je totale score van de 3 worpen is <totaal>.
Schrijf hiervoor de functie dart_score die als enige argument een string meekrijgt met de dartsnotatie en de punten berekent voor die worp. De score wordt altijd als getal teruggegeven. Indien de opgegeven score ongeldig is dan moet er een zelfgecreëerde error worden opgeworpen in deze volgorde:
- De punten per sector zijn altijd positief en nooit groter zijn dan 20. De punten voor SINGLE BULL is exact 25. Indien hier niet aan voldaan is, moet de functie eigen exceptie opwerpen op met als foutbericht: “{punten} is niet correct.”
- Elke andere fout in de score wordt aangegeven als ‘spellingsfout’. De functie roept een eigen exceptie op met als foutbericht: “”{score}” heeft een spellingsfout.”
Er wordt geen rekening gehouden met hoofd- of kleine letters bij de ingave!
Tip:
- Het oproepen van de verschillende exceptions gebeurt in de functie.
- Het opvangen en afhandelen gebeurt buiten de functie.
Voorbeeld zonder fouten
T18
20
bull
Output
Je totale score van de 3 worpen is 124.
Voorbeeld met foutafhandeling:
99
19
MISSS
d8
T0
t10
Output
99 is niet correct.
"MISSS" heeft een spellingsfout.
0 is niet correct.
Je totale score van de 3 worpen is 65.