Spiellogik (scio.controller.game)¶
-
class
scio.controller.game.
GameLogic
(player: scio.models.Player)¶ -
can_proceed
() → bool¶ Testet nach der folgenden Logik, ob das Spiel mit der nächsten Phase fortfahren kann:
PHASE 0 (Auswahl): Spiel fährt automatisch nach Auswahl fort, kein manuelles Fortfahren erforderlich.PHASE 1 (Abstimmung): Wenn jeder seinen Tipp abgegeben hat, kann das Spiel mit Phase 2 fortfahren.PHASE 2 (Auswertung): Spiel kann jederzeit fortfahren- Rückgabe
(bool) can_proceed
-
static
create_game
(num_rounds: int) → scio.models.Game¶ Erzeugt ein neues Spiel.
- Parameter
num_rounds – Anzahl Runden pro Spieler
- Rückgabe
(Game) neues Spiel
-
static
delete_old_games
()¶ Löscht alle Spiele (und damit auch Runden/Tipps/Spieler), die älter als 1 Tag sind.
-
classmethod
from_code
(game_id: str, player_id: str)¶ Erzeugt eine neue GameLogic-Instanz aus Spiel-ID und Spieler-ID.
- Parameter
game_id – (str) Spieler-ID
player_id – (str) Spiel-ID
- Rückgabe
(GameLogic) neue GameLogic-Instanz
- Verursacht
GameException – wenn das Spiel/der Spieler nicht existiert
-
classmethod
from_join
(game_id: str, name: str)¶ Fügt einen neuen Spieler zum Spiel hinzu und erzeugt daraus eine neue GameLogic-Instanz. Dies funktioniert nur, wenn das Spiel noch nicht begonnen hat (entweder keine Runde oder nur eine Runde in Phase 0/1 vorhanden). Der erste Spieler, der einem Spiel beitritt, wird automatisch der erste Kandidat. Falls nicht vorhanden wird die erste Runde erzeugt.
- Parameter
game_id – (str) Spiel-ID
name – (str) Spielername
- Rückgabe
(GameLogic) neue GameLogic-Instanz
- Verursacht
GameException – wenn das Spiel nicht existiert oder schon begonnen hat
-
static
game_from_code
(game_id) → scio.models.Game¶ Gibt das Spiel mit dem der angegebenen ID zurück.
- Parameter
game_id – (str) Spiel-ID
- Rückgabe
(Game) Spiel
-
static
get_gamedata
(game: scio.models.Game)¶ Gibt die Informationen eines Spiels aus. Wird vom Spielbildschirm (kein aktiver Spieler) verwendet.
- Parameter
game – (Game) Spiel
- Rückgabe
(dict) Spieldaten
-
get_playerdata
()¶ Gibt die Informationen des aktuellen Spiels aus (inklusive Spielerinformationen)
- Je nach Phase:
- Phase 0: Frage und 5 BilderPhase 1: Frage und 4 BilderPhase 2: Tipps + Punktzahlen aller SpielerPhase 3: Spiel beendet
- Informationen, die immer angezeigt werden:
- Alle Spielernamen mit IDs und aktueller PunktzahlAktuelle Runde/PhaseOb mit der nächsten Phase fortgefahren werden kann
- Rückgabe
(dict) Spieldaten
-
static
get_score
(rd: scio.models.Round, player: scio.models.Player)¶ Berechne die Punktzahl eines Spielers.
- Parameter
rd – Aktuelle Runde
player – Spieler, dessen Punktzahl berechnet wird
- Rückgabe
(int) Punktzahl
-
static
get_score_classic
(c_guess: list, p_guess: list) → int¶ Berechnet die Punktzahl eines Spielers nach der klassischen Methode (wird momentan nicht verwendet).
- Parameter
c_guess – (list) Tipp des Kandidaten
p_guess – (list) Tipp des Spielers
- Rückgabe
(int) Punktzahl
-
static
get_score_modern
(c_guess: list, p_guess: list) → int¶ Berechnet die Punktzahl eines Spielers nach der modernen Methode.
- Parameter
c_guess – (list) Tipp des Kandidaten
p_guess – (list) Tipp des Spielers
- Rückgabe
(int) Punktzahl
-
is_candidate
() → bool¶ Ist der aktuelle Spieler Kandidat?
-
make_guess
(guess: str)¶ Gibt einen Tipp ab.
- Parameter
guess – (str) Tipp des Spielers (Bild-IDs durch Kommas getrennt)
- Verursacht
GameException – wenn sich das Spiel nicht in Phase 1 befindet, der Tipp ungültig ist oder bereits ein Tipp abgegeben wurde
-
make_selection
(removed_image: int)¶ Entfernt eines der fünf Bilder. Anschließend fährt das Spiel mit Phase 1 fort.
- Parameter
removed_image – (int) Bild-ID des zu entfernenden Bilds.
- Verursacht
GameException – wenn sich das Spiel nicht in Phase 0 befindet, der Spieler kein Kandidat ist oder das gewählte Bild in der Runde nicht existiert
-
new_round
(candidate: scio.models.Player) → scio.models.Round¶ Erstellt eine neue Runde.
- Parameter
candidate – (Player) Kandidat der neuen Runde
- Rückgabe
(Round) neue Runde
- Verursacht
GameException – wenn die maximale Zahl Runden erreicht wurde.
-
next_round
() → scio.models.Round¶ Bestimmt den nächsten Kandidaten und erstellt eine neue Runde.
- Rückgabe
(Round) nächste Runde
- Verursacht
GameException – wenn die maximale Zahl Runden erreicht wurde.
-
proceed
()¶ Fährt mit der nächsten Spielphase fort. Siehe
can_proceed()
für die Übergangslogik.Wenn sich das Spiel in Phase 2 der letzten Runde befindet, endet das Spiel.
- Verursacht
GameException – wenn das Spiel nicht fortfahren kann
-
remove_player
(player_id: str)¶ Bevor das Spiel anfängt können Spieler entfernt werden. Ein Spieler sollte sich nicht selbst löschen können.
- Parameter
player_id – (str) ID des zu löschenden Spielers
- Verursacht
GameException – wenn das Spiel bereits gestartet wurde, der Spieler nicht zum Spiel gehört oder das Spiel bereits gestartet wurde.
-
static
score_method
(c_guess: list, p_guess: list) → int¶ Berechnet die Punktzahl eines Spielers nach der modernen Methode.
- Parameter
c_guess – (list) Tipp des Kandidaten
p_guess – (list) Tipp des Spielers
- Rückgabe
(int) Punktzahl
-
update_players
()¶ Aktualisiert die Spielerliste von der Datenbank.
-