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 D avec 92 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.