Μπόουλινγκ

Μπόουλινγκ

Μέτριο

Οδηγίες

Υπολόγισε το σκορ ενός παιχνιδιού μπόουλινγκ.

Το μπόουλινγκ είναι ένα παιχνίδι όπου οι παίκτες κυλούν μια βαριά μπάλα για να ρίξουν κορύνες που είναι τοποθετημένες σε τρίγωνο. Γράψε κώδικα που να παρακολουθεί το σκορ ενός παιχνιδιού μπόουλινγκ.

Η βαθμολόγηση στο μπόουλινγκ

Το παιχνίδι αποτελείται από 10 καρέ. Ένα καρέ αποτελείται από μία ή δύο ρίψεις της μπάλας, με 10 κορύνες όρθιες κατά την αρχικοποίηση του καρέ. Υπάρχουν τρεις περιπτώσεις για τον υπολογισμό ενός καρέ.

  • Ένα ανοιχτό καρέ είναι όταν καταγράφεται σκορ μικρότερο του 10 για το καρέ. Σε αυτή την περίπτωση, το σκορ του καρέ είναι ο αριθμός των κορυνών που ρίχτηκαν.

  • Ένα σπέαρ είναι όταν και οι δέκα κορύνες ρίχνονται με τη δεύτερη ρίψη. Η συνολική αξία ενός σπέαρ είναι 10 συν ο αριθμός των κορυνών που ρίχνονται στην επόμενη ρίψη.

  • Ένα στράικ είναι όταν και οι δέκα κορύνες ρίχνονται με την πρώτη ρίψη. Η συνολική αξία ενός στράικ είναι 10 συν ο αριθμός των κορυνών που ρίχνονται στις επόμενες δύο ρίψεις. Αν ένα στράικ ακολουθείται αμέσως από ένα δεύτερο στράικ, τότε η αξία του πρώτου στράικ δεν μπορεί να προσδιοριστεί μέχρι να γίνει μία ακόμα ρίψη της μπάλας.

Ακολουθεί ένα παράδειγμα τριών καρέ:

Καρέ 1 Καρέ 2 Καρέ 3
X (στράικ) 5/ (σπέαρ) 9 0 (ανοιχτό καρέ)

Το καρέ 1 είναι (10 + 5 + 5) = 20

Το καρέ 2 είναι (5 + 5 + 9) = 19

Το καρέ 3 είναι (9 + 0) = 9

Αυτό σημαίνει ότι το τρέχον σύνολο είναι 48.

Το δέκατο καρέ στο παιχνίδι είναι ειδική περίπτωση. Αν κάποιος ρίξει σπέαρ ή στράικ, τότε παίρνει μία ή δύο μπάλες συμπλήρωσης αντίστοιχα. Οι μπάλες συμπλήρωσης υπάρχουν για να υπολογιστεί το σύνολο του 10ου καρέ. Το να σημειώσεις στράικ ή σπέαρ στη μπάλα συμπλήρωσης δεν δίνει στον παίκτη περισσότερες μπάλες συμπλήρωσης. Η συνολική αξία του 10ου καρέ είναι ο συνολικός αριθμός των κορυνών που ρίχτηκαν.

Για ένα δέκατο καρέ X1/ (στράικ και σπέαρ), η συνολική αξία είναι 20.

Για ένα δέκατο καρέ XXX (τρία στράικ), η συνολική αξία είναι 30.

Απαιτήσεις

Γράψε κώδικα που να παρακολουθεί το σκορ ενός παιχνιδιού μπόουλινγκ. Θα πρέπει να υποστηρίζει δύο λειτουργίες:

  • Η roll(pins : int) καλείται κάθε φορά που ο παίκτης ρίχνει μια μπάλα. Το όρισμα είναι ο αριθμός των κορυνών που ρίχτηκαν.
  • Η score() : int καλείται μόνο στο πολύ τέλος του παιχνιδιού. Επιστρέφει το συνολικό σκορ για εκείνο το παιχνίδι.

Υλοποίηση

Θα χρειαστεί να αποθηκεύσεις κάποια κατάσταση του παιχνιδιού.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Pharo Exercism

Έτοιμος να ξεκινήσεις την άσκηση Μπόουλινγκ;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Pharo με 50 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.