Parcours
/
Haskell
Haskell
/
Exercices
/
Personnage de D&D
Personnage de D&D

Personnage de D&D

Facile

Introduction

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.

Instructions

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 :

  • 5, 3, 1, 6 : tu écartes le 1 et additionnes 5 + 3 + 6 = 14, que tu affectes à la Force.
  • 3, 2, 5, 3 : tu écartes le 2 et additionnes 3 + 5 + 3 = 11, que tu affectes à la Dextérité.
  • 1, 1, 1, 1 : tu écartes le 1 et additionnes 1 + 1 + 1 = 3, que tu affectes à la Constitution.
  • 2, 1, 6, 6 : tu écartes le 1 et additionnes 2 + 6 + 6 = 14, que tu affectes à l'Intelligence.
  • 3, 5, 3, 4 : tu écartes le 3 et additionnes 5 + 3 + 4 = 12, que tu affectes à la Sagesse.
  • 6, 6, 6, 6 : tu écartes le 6 et additionnes 6 + 6 + 6 = 18, que tu affectes au Charisme.

Comme la Constitution vaut 3, le modificateur de Constitution vaut -4 et les points de vie valent 6.

Note

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.

Indices

Cet exercice utilise les générateurs de QuickCheck. Voici quelques ressources pour commencer :

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Haskell Exercism

Prêt à commencer Personnage de D&D ?

Inscris-toi sur Exercism pour apprendre et maîtriser Haskell avec 107 exercices, et un vrai mentorat humain, le tout gratuitement.

Analyse approfondie de Personnage de D&D !

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.