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 Bilder
Phase 1: Frage und 4 Bilder
Phase 2: Tipps + Punktzahlen aller Spieler
Phase 3: Spiel beendet
Informationen, die immer angezeigt werden:
Alle Spielernamen mit IDs und aktueller Punktzahl
Aktuelle Runde/Phase
Ob 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.