Έπειτα από εβδομάδες προσμονής, εσύ και οι φίλοι σου μαζεύεστε για το πρώτο σας παιχνίδι Dungeons & Dragons (D&D). Καθώς αυτή είναι η πρώτη συνεδρία του παιχνιδιού, κάθε παίκτης πρέπει να δημιουργήσει έναν χαρακτήρα για να παίξει. Οι ικανότητες του χαρακτήρα καθορίζονται ρίχνοντας ζάρια 6 πλευρών, αλλά πού είναι τα ζάρια; Με ένα σοκ, συνειδητοποιείς ότι οι φίλοι σου περιμένουν από εσένα να φέρεις τα ζάρια, στο κάτω κάστης, δική σου ιδέα ήταν να παίξετε D&D! Πανικοβάλλεσαι, καθώς συνειδητοποιείς ότι ξέχασες να φέρεις τα ζάρια, πράγμα που θα σήμαινε ότι δεν θα γινόταν κανένα παιχνίδι D&D. Καθώς έχεις κάποιες βασικές δεξιότητες προγραμματισμού, σκέφτεσαι γρήγορα μια λύση: θα γράψεις ένα πρόγραμμα που προσομοιώνει ρίψεις ζαριών.
Σε ένα παιχνίδι Dungeons & Dragons, κάθε παίκτης ξεκινά δημιουργώντας έναν χαρακτήρα με τον οποίο μπορεί να παίξει. Αυτός ο χαρακτήρας έχει, μεταξύ άλλων, έξι ιδιότητες: strength, dexterity, constitution, intelligence, wisdom και charisma. Οι έξι αυτές ιδιότητες έχουν τιμές που καθορίζονται τυχαία. Για να το κάνεις αυτό, ρίχνεις τέσσερα ζάρια με 6 πλευρές και καταγράφεις το άθροισμα των τριών μεγαλύτερων ζαριών. Το κάνεις έξι φορές, μία για κάθε ιδιότητα.
Οι αρχικοί πόντοι ζωής του χαρακτήρα σου είναι 10 + ο τροποποιητής constitution του χαρακτήρα σου. Για να βρεις τον τροποποιητή constitution του χαρακτήρα σου, αφαίρεσε το 10 από το constitution του χαρακτήρα σου, διαίρεσε με το 2 και στρογγυλοποίησε προς τα κάτω.
Γράψε μια γεννήτρια τυχαίων χαρακτήρων που ακολουθεί τους παραπάνω κανόνες.
Για παράδειγμα, οι έξι ρίψεις των τεσσάρων ζαριών μπορεί να μοιάζουν κάπως έτσι:
Επειδή το constitution είναι 3, ο τροποποιητής constitution είναι -4 και οι πόντοι ζωής είναι 6.
Οι περισσότερες γλώσσες προγραμματισμού διαθέτουν γεννήτριες (ψευδο)τυχαίων αριθμών, αλλά λίγες γλώσσες είναι σχεδιασμένες για να ρίχνουν ζάρια. Μία τέτοια γλώσσα είναι η Troll.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Dart με 78 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.
Εξερευνούμε πώς να δημιουργούμε (φαινομενικά) τυχαίες ρίψεις ζαριών. Θα μάθεις για seeds, ψευδοτυχαίους αριθμούς και μερικές συνηθισμένες παγίδες. Τέλος, θα δούμε πόσο καλός είναι ο property-based testing για τον έλεγχο συναρτήσεων που επιστρέφουν τυχαίες τιμές.