Compare commits
5 commits
187ec1cd7c
...
4619f787f0
Author | SHA1 | Date | |
---|---|---|---|
4619f787f0 |
|||
3ca0b5a3c4 |
|||
7e30e191b4 |
|||
|
140bd44d66 | ||
|
1d6ac261e0 |
7 changed files with 58 additions and 1 deletions
2
projektdokumentation/.gitignore
vendored
2
projektdokumentation/.gitignore
vendored
|
@ -6,7 +6,7 @@
|
||||||
*.fls
|
*.fls
|
||||||
*.out
|
*.out
|
||||||
*.toc
|
*.toc
|
||||||
|
*.pdf
|
||||||
## Intermediate documents:
|
## Intermediate documents:
|
||||||
*.dvi
|
*.dvi
|
||||||
*-converted-to.*
|
*-converted-to.*
|
||||||
|
|
|
@ -35,4 +35,6 @@
|
||||||
\acro{URL}{Uniform Resource Locator}\acused{URL}
|
\acro{URL}{Uniform Resource Locator}\acused{URL}
|
||||||
\acro{VM}{Virtual Machine}
|
\acro{VM}{Virtual Machine}
|
||||||
\acro{XML}{Extensible Markup Language}
|
\acro{XML}{Extensible Markup Language}
|
||||||
|
\acro{API}{Application Programming Interface}
|
||||||
|
\acro{JWT}{JSON Web Token}
|
||||||
\end{acronym}
|
\end{acronym}
|
||||||
|
|
BIN
projektdokumentation/Bilder/oauth.jpg
Normal file
BIN
projektdokumentation/Bilder/oauth.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 92 KiB |
|
@ -2,3 +2,5 @@
|
||||||
\input{Inhalt/Einleitung}
|
\input{Inhalt/Einleitung}
|
||||||
\input{Inhalt/Projektarchitektur}
|
\input{Inhalt/Projektarchitektur}
|
||||||
\input{Inhalt/CI}
|
\input{Inhalt/CI}
|
||||||
|
\input{Inhalt/Dice.tex}
|
||||||
|
\input{Inhalt/Auth.tex}
|
||||||
|
|
9
projektdokumentation/Inhalt/Auth.tex
Normal file
9
projektdokumentation/Inhalt/Auth.tex
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
\section{Authentifizierung}
|
||||||
|
\label{sec:Authentifizierung}
|
||||||
|
Die Authentifizierung gegenüber der \acs{API} erfolgt über einen \acs{JWT}-Token, der dem Frontend nach Erfolgreicher Authentifizierung übergeben wird.
|
||||||
|
Authentifizierung läuft über zwei verschiedene Wege ab:
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Registrierung mit username/password:} Der Nutzer füllt ein Registrierungs-Formular aus, welches die Anmeldedaten an die \acs{API} sendet. Diese validitert die Anmeldedaten und legt bei Erfolg einen neuen Nutzer an. Anschließend wird eine E-Mail-Verifizierungs-Mail gesendet. Bis der Link in der Verifizierungs-Mail nicht angeklickt wurde, ist der Nutzer nicht aktiv und kann sich nicht anmelden. Nach dem Klick auf den Link wird der Nutzer aktiviert und kann sich anmelden.
|
||||||
|
\item \textbf{Login mit username/password:} Der Nutzer füllt ein Anmelde-Formular, welches die Anmeldedaten an die \acs{API} sendet. Diese prüft die Anmeldedaten und gibt bei Erfolg einen \acs{JWT}-Token zurück. Falls kein Nutzer mit den Anmeldedaten existiert, wird der Nutzer aufgefordert einen Account zu erstellen.
|
||||||
|
\item \textbf{Login über Oauth (Open Authorization):} Der Nutzer meldet sich mit einem Oauth-Provider an, in unserem Fall Google oder Github. Das Backend leitet den Nutzer zum Oauth-Provider weiter, der die Anmeldedaten prüft und bei Erfolg den Nutzer auf die Applikation weiterleitet und einen Authorization-Code zurück gibt. Mit diesem Code holt sich die \acs{API} einen \acs{JWT} vom jeweiligen Provider und holt sich Nutzer-Informationen. Mit diesen wird dann ein existierender Nutzer eingeloggt, oder registriert falls der Nutzer noch kein Konto hatte. Anschließend wird von der \acs{API} ein \acs{JWT} generiert und an das Frontend weitergegeben.
|
||||||
|
\end{itemize}
|
44
projektdokumentation/Inhalt/Dice.tex
Normal file
44
projektdokumentation/Inhalt/Dice.tex
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
\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.
|
||||||
|
|
||||||
|
\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}
|
Binary file not shown.
Reference in a new issue