Après des semaines d'impatience, tes amis et toi vous retrouvez pour votre toute première partie de Dungeons & Dragons (D&D). Comme c'est la première session de la partie, chaque joueur doit générer un personnage avec lequel jouer. Les capacités du personnage sont déterminées en lançant des dés à 6 faces, mais où sont les dés ? Sous le choc, tu réalises que tes amis attendent de toi que tu leur fournisses les dés ; après tout, c'était ton idée de jouer à D&D ! Pris de panique, tu réalises que tu as oublié d'apporter les dés, et sans eux, pas de partie de D&D. Comme tu as quelques bases en programmation, tu trouves vite une solution : tu vas écrire un programme qui simule des lancers de dés.
Pour une partie de Dungeons & Dragons, chaque joueur commence par générer un personnage avec lequel il peut jouer. Ce personnage possède, entre autres, six caractéristiques : Force, Dextérité, Constitution, Intelligence, Sagesse et Charisme. Les scores de ces six caractéristiques sont déterminés de manière aléatoire. Pour cela, lance quatre dés à 6 faces et note la somme des trois dés les plus élevés. Répète l'opération six fois, une fois par caractéristique.
Les points de vie initiaux de ton personnage sont égaux à 10 + son modificateur de Constitution. Tu obtiens le modificateur de Constitution de ton personnage en soustrayant 10 à sa Constitution, en divisant le résultat par 2, puis en arrondissant à l'inférieur.
Écris un générateur de personnages aléatoire qui suit les règles ci-dessus.
Par exemple, les six lancers de quatre dés peuvent ressembler à ceci :
Comme la Constitution vaut 3, le modificateur de Constitution vaut -4 et les points de vie valent 6.
La plupart des langages de programmation disposent de générateurs (pseudo-)aléatoires, mais peu de langages de programmation sont conçus pour lancer des dés. Un tel langage est Troll.
Inscris-toi sur Exercism pour apprendre et maîtriser Dart avec 78 exercices, et un vrai mentorat humain, le tout gratuitement.
On explore comment générer des lancers de dés (en apparence) aléatoires. Tu vas découvrir les graines, les nombres pseudo-aléatoires et quelques pièges courants. Enfin, on verra pourquoi les tests basés sur les propriétés sont parfaits pour tester des fonctions qui renvoient des valeurs aléatoires.