-
-
Notifications
You must be signed in to change notification settings - Fork 1
Spiel und Spielmodus
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.
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
Ziele und Plattformen
Features und Zyklen
Architektur
Screens und Klickwege
Technologien und Infrastruktur
Design Grundlagen
App Icon
Hauptmenü
Trainingsmodus
Liste der Trainingsspiele
Übersicht nach Trainingsspiel
Liste der Trainingspläne
Trainingsplan erstellen
Zwischen Trainingsspielen
Übersicht nach Trainingsplan
Adaptives Design
Regeln für Trainingsspiel
Statistiken
Startscreen
Tutorial
Einstellungen
About
Trainingsplan Empfehlungen
Cloud Funktionen
Projektstruktur und Deployment
Datenstrukturen
Spiel und Spielmodus
Rechtliche Grundlagen Donation
Veröffentlichungskanäle
Beschreibungstexte (evtl. nicht notwendig)