Das Spiel wird auf der Basis von Flex (Adobe Flash) entwickelt. Flex kann man Technisch gesehen in 2 Seite aufteilen. Zum einen hat man für die Entwicklung (bzw. das Designen) von Oberflächen die Möglichkeit auf die für Flex definierte Sprache MXML zurückzugreifen. Zum anderen kann jegliche Programmlogik in ActionScript Programmiert werden. So ist in der Theorie das Design von der Logik getrennt was bei der Entwicklung von normalen Anwendungen von Vorteil ist.
Nach einigem Testen mit Actionscript habe ich raus gefunden das Oberflächen auch einfach über ActionScript selbst erstellt werden können. Dies bringt gleich einige Vorteile mit sich. Zum ersten muss ich mich so nicht in die Unbekannte Syntax von MXML einarbeiten. Zum anderen habe ich so die Möglichkeit in Actionscript eine art Gameloop zu erstellen. Dadurch habe ich eine bessere Kontrolle über alle Elemente die auf dem Bildschirm dargestellt werden sollen. Da ich hier bewusst auf einige Funktionen von Flex bzw MXML verzichte erhöht sich auch der Aufwand zum erstellen von Annimationen. Diese müssen nun für jedes Frame berechnet werden.
Bei der Entwicklung möchte ich versuchen die Abhängigkeiten von Logik und Darstellung so gering wie möglich zu halten. Wenn die Darstellung und die Logik zwei Zustände sind muss darauf geachtet werden das diese Zustände immer gleich sind. Durch diese Trennung muss die Datenstruktur auf die Animationen warten und anders Rum da sonst eine Inkonsistenz in den Daten entstehen kann. Eine Herausforderung wird es sein die Daten immer synchron zu halten und die Kommunikation zwischen Daten und Darstellung sicherzustellen.
Zu entwickelnde Komponenten
Im folgenden werde ich einen kurzen Ausblick auf die zu entwickelnden Komponenten für das zu Entwickelnden Spiel geben.
Datenstruktur
Das innere des Spiels wird durch die Datenstruktur wieder gespiegelt. Sie besteht aus einem 2 Dimensionalen Array welches jede Position des Spielfeldes ansprechen kann. Desweiteren bietet die Datenstruktur Operationen zum rotieren des Spielfeldes, einfügen neuer Steine sowie erkennen eines Three-Match.
Screens
Das Spiel wird verschiedene Bildschirme haben die zur Laufzeit ausgetauscht werden müssen. Diese Bildschirme werden durch Klassen die das Interface IScreen implementieren und von der Klasse Sprite abgeleitet.
Durch die dawUpdate Methode die durch das Interface definiert wird stellt jeder Bildschirm eine Schnittelle die im Gameloop angesprochen werden kann. Dort können einfache Formen direkt Gezeichnet werden oder andere Darstellungsobjekte wie zb Spielsteine mit jedem Frame aktualisiert werden.
