Spielelogik - QuizduellApp/BraunschweigerMedientageQuiz GitHub Wiki
Spiellogik:
Wichtige Klassen:
- Season: Klasse zum verwalten, ob ein Benutzer online oder offline ist
Else TODO
- SQL Injection
Benutzer herausfordern:
-Ein User kann eine Freundesliste anlegen, in der er alle Freunde bzw. Spielpartner abspeichern kann bzw. löschen kann. In der Freundesliste kann er das Profil des Benutzers sehen und auch diesen herausfordern. Wichtig ist, dass es von beiden Seiten eine Freundschaft sein muss !
-Benutzer müssen nicht online sein, um Spieleanfragen zu bekommen. Wenn diese Offline sind, wird in der Datenbank oder in einer SQS ( Simple Queue Message ) gespeichert, dass er ein Spielangebot bekommt und sobald er die App startet, sieht er die Anfrage.
-Ein Spieler kann immer nur einmal von dem gleichen Benutzer zur Zeit herausgefordert werden. So wird eine Art Spam verhindert. Dies muss in der Datenbank auch abgespeichert werden. Evtl. mit neuer Spalte ( Spiel beendet true, false ).
-Denkbar ist ebenfalls, dass man via Push-Nachricht eine Anfrage sieht. Dafür muss jedoch das Smartphone erlauben, dass Push-Nachrichten gesendet werden.
Datenbankabfrage:
-Eine Zwischentabelle mit „Offene Spiele“ ist denkbar. Wenn sich ein Benutzer einloggt, wird geschaut, ob in der Tabelle „Offene Spiele“ seine Id vorhanden ist und es werden ihm die Offenen Spiele in der App präsentiert.
-Freunde: Auf dem Smartphone können wir eine Tabelle mit den IDs der Freunde speichern und lösen die mit dem einloggen bzw. in der Activity aus, indem wir mit „Select Benutzername ... where id = id „ abfragen
Das eigentliche Spiel:
-Ein Spiel dauert 4 Runden. Jede Runde hat 3 Fragen.
-Es stehen 2 Kategorien pro Runde zur Auswahl.
-Abwechselnd sucht ein Benutzer eine Kategorie aus.
-Aufbau des Spieledesigns wie bei OriginalApp. Auswahl Kategorien -> Frage + 4 Antwortmöglichkeiten -> Am Ende Gesamtübersicht, wer welche Frage richtig oder falsch beantwortet hat.
Datenbankabfrage:
-Die Fragen und Antworten stehen in einer Datenbank: Es gibt eine Spalte mit richtiger Antwort ( 1,2,3,4 ). Es werden die Fragen abgefragt mit richtiger Frage. Jede Frage bekommt eine ID, in der sie in der Datenbank stehen. So können die Antwortmöglichkeiten gemixed werden und am Ende kann durch die ID, die richtige Frage rausgecatched werden, in dem wir die ID der Frage mit der Antwort vergleichen ( hoffe dies wird klar und ich habe es mir richtig überlegt :D )
-Es wird gespeichert, welcher Benutzer welche Antwort gegeben hat. So kann in der App gezeigt werden, welcher Benutzer welche Antwort gegeben hat.
Highscore:
-Pro gewonnenes Spiel gibt es 5 Punkte.
- Beim verlieren werden dem Benutzer 2 Punkte abgezogen. Mindestpunktzahl sind 0 Punkte, sprich es können keine - Punkte entstehen.
-Bei Gleichstand ( beide Benutzer wussten alles ) , bekommt jeder 0 Punkte und als Sieger wird 0 eingetragen !?
-Falls ein Benutzer schonmal gegen den Spieler gewonnen hat, bekommt er einen Punkt weniger. Dieses wird rekursiv. So ist gegeben, dass ein Benutzer nicht von einem Freund gefeedet wird. Außerdem muss er um zu gewinnen mehr Freunde in das Spiel einladen. So kann eine größere Community erzielt werden.
Datenbankabfrage:
-Highscore: Der Highscore wird in der Tabelle „Benutzer“ gespeichert.
-Anzahl der Spiele: Es kann aus der Tabelle „Spiel“ gefiltert werden, wie oft ein Benutzer gegen einen anderen Benutzer gespielt hat. In der Tabelle Spiele wird außerdem eine Spalte mit „Sieger“ angelegt.