Spielmodi

Die Basisklasse aller Spielmodi ist „BaseMode”, jeder Spielmodus erbt von dieser Klasse. Diese Klasse kümmert sich um alle grundlegenden Funktionalitäten, die für jede Spielmodus von Bedeutung sind: Messung der Zeit, Zählung der Runden, Aktualisierungen der Oberfläche ermöglichen, die Ampelsequenz einleiten.

Was diese Klasse nicht übernimmt, ist die Entscheidung, wann ein Rennen beendet ist, da dies von jedem Spielmodus abhängig ist. Dazu stehen drei Methoden zur Verfügung, die von den Unterklassen überschrieben werden können: configure ermöglicht es, weitere Argumente zu verarbeiten, etwa die maximale Anzahl von Runden oder ein Zeitlimit. on_player_passed_line wird aufgerufen, wenn ein Spieler die Ziellinie durchquert; das entsprechende Spielerobjekt wird als erstes Argument übergeben. Mithilfe von check_conditions können weitere Überprüfungen durchgeführt werden, z.B. auf das erreichen des Zeitlimits getestet werden, da diese Methode in jedem Schleifendurchgang aufgerufen wird.

class modes.BaseMode(device, ui, players, *args, **kwargs)

Baseclass for all modes.

cancel()

Cancel a match.

check_conditions()

Check for winning conditions.

Overwrite this method in your gamemode to check for certain conditions, e.g. timelimits. Called after every sensor polling.

configure(*args, **kwargs)

Make further configurations.

Overwrite this method if you want to use more arguments. Additional arguments to __init__ will be passed to this method after the other arguments (device, ui, players) have been processed.

on_player_passed_line(player)

Called when a car passes the sensor at the line and is not yet finished.

Round time will be saved before calling and is accessable via the player object.

run()

Give control to the gamemode until the race is finished.

save()

Write the acquired data to the database. (not implemented)

Knock Out

In einem „Knock Out“ Rennen fliegt in jeder Runde der langsamste Spieler raus. Dadurch sind maximal drei Runden möglich, bei diesen stehen die Spieler aber unter hohem Druck und Nervenkitzel.

class modes.KnockOut(device, ui, players, *args, **kwargs)
check_conditions()

Check if all players are finished

on_player_passed_line(player)

Check if the player is next to last.

If so, set the last player to finish and give him his rank.

Match

Bei einem Match fahren 2-4 Spieler eine bestimmte Anzahl an Runden. Nach dem Absolvieren aller Runden wird der Strom auf der entsprechenden Spur abgeschaltet.

class modes.Match(device, ui, players, *args, **kwargs)
check_conditions()

Check if all players passed or are disabled.

configure(rounds)

Set the number of rounds needed to pass the race.

on_player_passed_line(player)

Set player.finished and his rank if the player made all rounds.

Time Attack

Im Modus „Time Attack“ wird eine bestimmte Zeit vorgegeben. Nach Ablauf der Zeit wird auf allen Spuren der Strom abgeschaltet. Sieger ist, wer die meisten Runden geschafft hat.

class modes.TimeAttack(device, ui, players, *args, **kwargs)
check_conditions()

Check if the time is over

Used to power off the tracks.

configure(seconds)

Set the timelimit (in seconds)

on_player_passed_line(player)

Update the player rank on line pass.

Training

Im „Training” Modus kann auf jeder Spur separat trainiert werden. Dafür wird eine maximale Anzahl von Runden angegeben, die auf jeder Strecke absolviert werden können. Bei Erreichen des Limits wird der Strom von der Strecke genommen, bis er wieder über den „Admin” Tab im Hauptfenster wieder freigeschaltet wird. Nach der Freischaltung können auf dieser Spur wieder soviele Runden gefahren werden, wie das Limit vorgibt.

class modes.Training(device, ui, players, *args, **kwargs)
configure(rounds)

Set the number of rounds a player may practise.

on_player_passed_line(player)

Check if the player made all his rounds.

reset_player(player)

Reset the times of a player for the next training.

Inhalt

Vorheriges Thema

Zeitmessung

Nächstes Thema

Spieler

Diese Seite