Skip to content

Spiel und Spielmodus

Alexander Strutz edited this page Apr 2, 2021 · 1 revision

Spiel

Um verschiedene Spiele möglichst dynamisch erstellen zu können, wird das Interface Game.dart genutzt. Das Interface bietet alle Methoden, die vom Frontend benötigt werden, um ein Spiel anzeigen zu können. Zudem gibt es Variablen, die als Grundgerüst des Spiels dienen.

  late final String _name;
  late var _nextTarget;
  late String _question;
  late String _additionalText;
  late List<Answer> _answers;
  late List<ThrowSet> _lastThrows;
  late bool _isFinished;

Der Name ist selbsterklärend. Das _nextTarget kann verschiedene Datentypen je nach Spielart einnehmen. So kann es ein Field oder ein Finish sein, je nach Art des Spiels. Da das _nextTarget nicht außerhalb des Spiels genutzt wird, kann der Datentyp dynamisch sein. Die _question steht im Spielmodus über den Antworten und gibt den User Aufschluss was eingetragen wird (geworfene Darts, Score, getroffen? etc.). Der _additionalText befüllt den unteren Text des NextTargetArea. Die _answers beschreiben die Aktion des Spielers auf eine Aktion/Frage. Die Liste kann nach jedem Wurf angepasst werden. _lastThrows dokumentiert alle bisherigen Würfe (= gegebenen Antworten) für Statistiken und der Möglichkeit Würfe zurückzusetzen. _isFinished beschreibt den Status des Spiels. Wenn die Klasse instantiiert ist, ist das Spiel aktiv, aber noch nicht gestartet. Ist _isFinished = true, ist das Spiel beendet.

  void start() {}
  void registerThrow(Answer answer) {}
  void updateLastThrows(Answer answer) {}
  void resetThrow() {}
  String getNextTargetText() => '';
  String getAdditionalText() => '';
  String getLastTargetText() => '';

Auf die getter wird nicht eingegangen, sie sind selbsterklärend. Mit start werden Routinen abgerufen, die zwischen der Aktivierung und dem Beginn eines Spiels stattfinden. Mit jedem Klick auf eine Antwort, also jedem Wurf, wird registerThrow aufgerufen mit der entsprechenden Antwort. Im selben Moment wird updateLastThrows aufgerufen. Das Gegenstück ist resetThrow, wenn ein Wurf zurückgesetzt werden soll. Die drei String-Methoden werden vom Spielmodus zum Rendering verwendet und im Folgenden erklärt.

Spielmodus

Der Spielmodus ist das Herzstück der Anwendung und daher sehr modular, sodass er für jedes Spiel genutzt werden kann. Frontendseitig wird die GameMode.dart in vier Abschnitte unterteilt: NextTargetArea, LastTargetArea, AnswerArea und StatsArea.

LastTargetArea (blau) rendert einen String, der von getLastTargetText zurückgegeben wird und die letzten Würfe samt Ergebnisse in Textform anzeigt. NextTargetArea besteht aus dem nächsten Ziel (getNextTargetText, gelb) und einem optionalen Zusatztext (getAdditionalText, grün), der z.B. für Checkout-Wege genutzt wird. AnswerArea zeigt die aktuelle Frage (rot) und die entsprechenden Antworten (grau) an. StatsArea ist in der Version 0.1 noch nicht implementiert, soll aber Live-Statistiken im Footer zeigen

Clone this wiki locally