JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
Dice.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Valentin Eloy
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
10
11#include <optional>
12#include <string>
13#include <string_view>
14#include <vector>
15
17
18namespace core {
19
28struct Dice {
30 int count = 0;
32 int faces = 0;
34 int modifier = 0;
35
37 [[nodiscard]] constexpr int minimum() const noexcept {
38 return count + modifier;
39 }
40
42 [[nodiscard]] constexpr int maximum() const noexcept {
43 return count * faces + modifier;
44 }
45
46 [[nodiscard]] bool operator==(const Dice&) const = default;
47};
48
56struct DiceRoll {
60 std::vector<int> faces;
62 int total = 0;
63
65 [[nodiscard]] std::string describe() const;
66};
67
75[[nodiscard]] std::optional<Dice> parseDice(std::string_view notation);
76
78[[nodiscard]] std::string formatDice(const Dice& dice);
79
87[[nodiscard]] DiceRoll rollDice(const Dice& dice, DeterministicRandom& random);
88
89} // namespace core
Générateur pseudo-aléatoire déterministe, à graine explicite (jamais l'horloge, EX-NFR-002).
Générateur pseudo-aléatoire léger (SplitMix64), à graine explicite.
Definition DeterministicRandom.h:59
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
DiceRoll rollDice(const Dice &dice, DeterministicRandom &random)
Lance une expression avec un générateur déterministe.
Definition Dice.cpp:106
std::string formatDice(const Dice &dice)
Réécrit une expression en notation canonique (2d6+3, 1d8, 4).
Definition Dice.cpp:92
std::optional< Dice > parseDice(std::string_view notation)
Analyse une notation NdF, NdF+M, NdF-M ou une valeur fixe.
Definition Dice.cpp:40
Le détail d'un lancer, pour que le joueur puisse le reconstituer (EX-DND-003).
Definition Dice.h:56
int total
Somme des dés et du modificateur.
Definition Dice.h:62
Dice dice
L'expression lancée.
Definition Dice.h:58
std::string describe() const
Restitution lisible : « 2d6+3 : 4 + 5 + 3 = 12 ».
Definition Dice.cpp:119
std::vector< int > faces
Chaque dé, dans l'ordre du tirage.
Definition Dice.h:60
Une expression de dés analysée : 2d6+3, 1d8, 4.
Definition Dice.h:28
int modifier
Modificateur additionnel, éventuellement négatif.
Definition Dice.h:34
int count
Nombre de dés. 0 pour une valeur fixe ("4").
Definition Dice.h:30
constexpr int minimum() const noexcept
Plus petit total possible.
Definition Dice.h:37
constexpr int maximum() const noexcept
Plus grand total possible.
Definition Dice.h:42
int faces
Nombre de faces. 0 pour une valeur fixe.
Definition Dice.h:32
bool operator==(const Dice &) const =default