From 1d6ac261e0d89ddad47a6eba23d86e0dc997515c Mon Sep 17 00:00:00 2001
From: Phan Huy Tran
Date: Wed, 11 Jun 2025 13:51:54 +0200
Subject: [PATCH] docs: add dice docs
---
projektdokumentation/Inhalt.tex | 1 +
projektdokumentation/Inhalt/Dice.tex | 46 ++++++++++++++++++
projektdokumentation/Projektdokumentation.pdf | Bin 1360865 -> 1369275 bytes
3 files changed, 47 insertions(+)
create mode 100644 projektdokumentation/Inhalt/Dice.tex
diff --git a/projektdokumentation/Inhalt.tex b/projektdokumentation/Inhalt.tex
index cff7bc5..b327d8e 100644
--- a/projektdokumentation/Inhalt.tex
+++ b/projektdokumentation/Inhalt.tex
@@ -2,3 +2,4 @@
\input{Inhalt/Einleitung}
\input{Inhalt/Projektarchitektur}
\input{Inhalt/CI}
+\input{Inhalt/Dice.tex}
diff --git a/projektdokumentation/Inhalt/Dice.tex b/projektdokumentation/Inhalt/Dice.tex
new file mode 100644
index 0000000..a4d942a
--- /dev/null
+++ b/projektdokumentation/Inhalt/Dice.tex
@@ -0,0 +1,46 @@
+\clearpage
+\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.
+
+\includegraphics[scale=1]{dice.png}\\[1ex]
+
+\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}
diff --git a/projektdokumentation/Projektdokumentation.pdf b/projektdokumentation/Projektdokumentation.pdf
index 885e0e689453ac1f136449ab93cbf9470f76d82d..be035eaf26310c5b40e818106c12fdf4ef93e416 100644
GIT binary patch
delta 104938
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