Nach wochenlanger Vorfreude triffst du dich mit deinen Freunden zu eurer allerersten Partie Dungeons & Dragons (D&D). Da dies die erste Sitzung des Spiels ist, muss jeder Spieler einen Charakter erstellen, mit dem er spielt. Die Fähigkeiten des Charakters werden durch Würfeln mit sechsseitigen Würfeln bestimmt, aber wo sind die Würfel? Erschrocken stellst du fest, dass deine Freunde darauf warten, dass du die Würfel besorgst; schließlich war es deine Idee, D&D zu spielen! In Panik wird dir klar, dass du vergessen hast, die Würfel mitzubringen, was bedeuten würde, dass das D&D-Spiel ausfällt. Da du über grundlegende Programmierkenntnisse verfügst, hast du schnell eine Lösung parat: Du schreibst ein Programm, das das Würfeln simuliert.
Für eine Partie Dungeons & Dragons beginnt jeder Spieler damit, einen Charakter zu erstellen, mit dem er spielen kann. Dieser Charakter hat unter anderem sechs Eigenschaften: Stärke, Geschicklichkeit, Konstitution, Intelligenz, Weisheit und Charisma. Diese sechs Eigenschaften haben Werte, die zufällig bestimmt werden. Dazu würfelst du mit vier sechsseitigen Würfeln und notierst die Summe der drei größten Würfel. Das machst du sechs Mal, einmal für jede Eigenschaft.
Die anfänglichen Trefferpunkte deines Charakters sind 10 + der Konstitutionsmodifikator deines Charakters. Den Konstitutionsmodifikator deines Charakters findest du, indem du 10 von der Konstitution deines Charakters abziehst, durch 2 teilst und abrundest.
Schreibe einen Zufallsgenerator für Charaktere, der den oben genannten Regeln folgt.
Zum Beispiel können die sechs Würfe mit vier Würfeln so aussehen:
Weil die Konstitution 3 ist, ist der Konstitutionsmodifikator -4 und die Trefferpunkte sind 6.
Die meisten Programmiersprachen bieten (Pseudo-)Zufallsgeneratoren, aber nur wenige Programmiersprachen sind dafür ausgelegt, Würfel zu werfen. Eine solche Sprache ist Troll.
Melde dich bei Exercism an, um TypeScript mit 108 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.
Wir schauen uns an, wie man (scheinbar) zufällige Würfelwürfe erzeugt. Du lernst Seeds, Pseudozufallszahlen und einige typische Stolperfallen kennen. Zum Schluss sehen wir, warum Property-based Testing ideal ist, um Funktionen zu testen, die zufällige Werte zurückgeben.