\section{Dice}

\subsection{Was ist Dice?}
Das Würfelspiel 'Dice' ist ein originelles Spiel der Casinoplattform Stake.com\footnote{Stake.com ist eine bekannte Online-Glücksspielplattform, die eine Vielzahl von Casinospielen und Sportwetten anbietet.}. Das Spiel dreht sich um einen virtuellen 100-seitigen Würfel, 
bei dem Spieler die Parameter ihrer Wette beeinflussen können. Im Kern geht es darum, 
einen zuvor festgelegten 'Roll Over'- oder 'Roll Under'-Betrag zu unter- oder überschreiten, 
um eine Runde zu gewinnen. Spieler haben die Kontrolle über den Multiplikator und ihre Gewinnchancen: 
Durch die Anpassung des Zielwerts können sie das Verhältnis 
von Risiko und potenzieller Auszahlung steuern. Ein höherer Multiplikator verspricht zwar größere Gewinne, 
reduziert jedoch gleichzeitig die Wahrscheinlichkeit eines erfolgreichen Würfelwurfs.

\subsubsection{Zufallszahlengenerierung}
Zur Generierung des Würfelwurfs verwendet diese Implementierung die Standardklasse java.util.Random. 
Sie erzeugt eine pseudo-zufällige Zahl zwischen 1 und 100 (inklusive), 
die das Ergebnis des virtuellen 100-seitigen Würfels darstellt.


\subsubsection{Spielablauf und Datenfluss}

Der zentrale Controller steuert den Spielablauf und empfängt die Anfragen vom Frontend. Jede Anfrage enthält die Eckdaten des gewünschten Würfelwurfs:
\begin{itemize}
    \item \textbf{Einsatz:} Der gesetzte Münzbetrag.
    \item \textbf{Wettart:} Soll der Würfel ``über'' oder ``unter'' einen Wert fallen?
    \item \textbf{Zielwert:} Der vom Spieler festgelegte Referenzwert (1-100).
\end{itemize}

Zuerst prüft der Controller das Guthaben des Spielers. Bei unzureichenden Mitteln wird der Vorgang abgelehnt. Andernfalls übergibt er die weitere Ausführung an die Dienstklasse.

Die Dienstklasse übernimmt die eigentliche Logik des Würfelspiels:
\begin{enumerate}
    \item Zieht den Einsatz vom Spielerkonto ab.
    \item Erzeugt einen zufälligen Würfelwurf (Wert zwischen 1 und 100).
    \item Prüft, ob der Wurf die Gewinnbedingung erfüllt (entsprechend Wettart und Zielwert).
    \item Berechnet die Gewinnwahrscheinlichkeit und den sich daraus ergebenden Multiplikator.
    \item Schreibt bei einem Gewinn den entsprechenden Betrag (Einsatz $\times$ Multiplikator) dem Spielerkonto gut.
\end{enumerate}

Das Ergebnis des Spiels wird an das Frontend zurückgesendet und enthält:
\begin{itemize}
    \item Gewinnstatus (gewonnen/verloren)
    \item Auszahlungsbetrag
    \item Gewürfelten Wert
\end{itemize}
