Tekplace
Neuen Account einrichten:
Verbindungsproblem Ungültiges Passwort (mindestens 6 Zeichen!) Account mit dieser Email Adresse existiert bereits Der Benutzername existiert bereits Die Bestätigungs-Email konnte nicht gesendet werden Ungültige Email-Adresse Benutzername fehlt Unbekannter Benutzername Falsches Passwort
Benutzername:
Passwort:
Neuer Account
Abbrechen
Ok
Bestätige Deinen Account mit der Dir zugesandten Email! Dir wurde gerade eine Email zugesandt. Öffne sie und klicke auf den Link, den sie enthält um das Löschen Deines Accounts abzuschließen! Fehler beim Verbinden mit dem Server! Dieser Name ist schon vergeben! Das Match ist nicht mehr verfügbar!
OK
Willst Du Deinen Account und alle damit verbundenen Daten wirklich unwiderruflich löschen? Wirklich den Regelsatz löschen?
Ja
Nein
Name des Regelsatzes:
Verbindung fehlgeschlagen! Der Name ist schon vergeben!
OK
Abbrechen

DyBlo Handbuch

Klicke auf eine Überschrift, um den Inhalt zu öffnen!
(Oder: alles aufklappen.alles wieder zuklappen.)

1. Vorwort

Die Idee für ein Spiel, bei dem Blöcke herumgeschoben, abgelegt und eliminiert werden, hatten wir schon lange, speziell die "Classic" Regeln, nach denen beim Ablegen umherliegende Blöcke der selben Art in Blöcke der "nächstniedrigeren Art" verwandelt werden.

Als wir das Spiel für Android programmiert haben, wollten wir es natürlich zu einem gewissen Grad konfigurierbar machen. Z.B. die Feldgröße sollte frei einstellbar sein, oder auch die Anzahl der verschiedenen Block-Arten.

Nach und nach haben die Einstellungen überhand genommen, und wir fragten uns zudem, ob die Classic Regeln der Weisheit letzter Schluss sind. Nach vielen neuen Versionen, haben wir es schließlich zum Extrem getrieben: Regeln können völlig frei "programmiert" werden.

Wir sind uns bewusst, dass dies viele Leute, die einfach ein kleines Spielchen machen wollen, überfordert. Aber das sollte kein Problem sein: jeder kann ganz einfach bereits vorhandene Regelsätze benutzen, oder solche, die vielleicht in Zukunft von ambitionierteren Usern geschaffen werden. Wir finden das Potenzial eines freien Austauschs von Regelsätzen über das Internet faszinierend und planen, solche Funktionalitäten in einer der nächsten Versionen zu realisieren. Edit 4.4.2015: Mit der ersten Version 1.0 wird bereits das Herunter- und Hochladen von Regelsätzen über das Internet möglich sein.

2. Einführung

Was für ein Spiel ist DyBlo? Eigentlich unendlich viele mögliche Spiele in einem, je nachdem welcher Regelsatz gerade gilt. Allen Varianten gemeinsam ist:

  • Das Spielfeld ist rechteckig
  • Es gibt verschiedenen Block-Arten
  • Der Spieler schiebt einen Block auf dem Spielfeld herum und muss ihn in kurzer Zeit ablegen, woraufhin er einen Neuen bekommt, den er wieder ablegen muss
  • Ist kein Platz mehr zum Ablegen da, ist das Spiel zuende
  • Es gibt in der Regel Punkte, und man versucht seine Rekorde zu brechen

Natürlicherweise wird der Platz immer knapper und es muss möglich sein, umherliegende Blöcke zu eliminieren. Wie genau das passiert, wird durch die Vorgabe genauer Regeln bestimmt, die frei definierbar sind.

3. Steuerung

3.1. Spiel-Start

Durch Berühren des Startbildschirms an irgendeiner Stelle außerhalb der drei Knöpfe wird ein Spiel nach den momentan gewählten Regeln gestartet oder fortgesetzt. Ein Druck auf den Zurück-Knopf des Gerätes führt zum Start-Bildschirm zurück. Das Spiel wird dadurch unterbrochen und kann jederzeit wieder fortgesetzt werden, auch wenn die App zwischenzeitlich beendet werden sollte.

3.2. Start-Bildschirm

Neben einigen Informationen (einschließlich des momentan gewählten Regelsatzes) gibt es drei Knöpfe auf dem Start-Bildschirm:

  • Punkte:
    Stellt die Highscores des momentan gewählten Regelsatzes dar. Ist das Netzwerk aktiv und der Regelsatz online, werden die aktuellen Punktzahlen aktualisiert. Neue Punktzahlen werden lila, schon bekannte in gelb dargestellt; das letzte eigene Resultat ist besonders hervorgehoben. Auf dem Gerät gespeicherte nicht-online Punktzahlen sind mit schwarzer Platz-Zahl dargestellt, online-Punktzahlen mit weißer Platz-Zahl.
  • Regeln: Startet die Regelsatz-Liste. Ist ein Spiel unterbrochen worden, so wird es gelöscht (kann nicht mehr fortgesetzt werden), wenn die Regelsatz-Liste aufgerufen wird. (Hintergrund dafür ist, dass die Regeln des aktuellen Spiels geändert werden könnten, was die Daten korrumpieren und zu Fehlern führen könnte).
  • Set: Globale Einstellungen der App.

3.3. Das Spiel

Die Steuerung des aktuellen Blocks erfolgt durch Bewegen des Fingers auf dem Bildschirm, wobei es egal ist, an welcher Stelle die Berührung des Bildschirms stattfindet. Ein einfaches Klicken mit dem Finger legt den Block ab. Nach Zeitablauf wird er aber auch automatisch abgelegt. Es ist auch möglich mit zwei Fingern gleichzeitig zu arbeiten (Multitouch): ein Finger bewegt den Block, der andere macht den Klick zum ablegen. Bei Smartphones kann man so beispielsweise die zwei Daumen benutzen.

Durch Druck des Zurück-Knopfes des Gerätes wird das Spiel unterbrochen und kann später fortgesetzt werden. Ist das Spiel beendet, kehrt man automatisch zum Startbildschirm zurück.

3.4. Account erstellen

Wenn in den globalen Einstellungen Networking aktiviert ist, und Internet zur Verfügung steht, kannst Du einen Account erstellen. Dann kannst Du Deine Highscores online bringen, Regelsätze hoch- und herunterladen und bewerten.

Gib Deine Informationen ein. Es ist wichtig eine gültige Email-Adresse anzugeben, denn es wird Dir eine Email zugesendet, in der ein Aktivierungs-Link angeklickt werden muss. Danach bist Du beim nächsten Start der App online.

4. Die Regelsatz-Liste

Vom Hauptbildschirm aus ist per Knopfdruck die Regelsatzliste aufrufbar.

4.1. Regelsatz auswählen

Scrolle durch die Liste und wähle einen Regelsatz durch einfaches Klicken aus. Durch den Zurück-Knopf kommt man wieder auf den Startbildschirm und von dort aus kann man das Spiel mit den ausgewählten Regeln beginnen.

4.2. Import/Export und neue Regelsätze

In der oberen Menüleiste finden sich vier Menüpunkte (einige möglicherweise nur über das drei-Punkte-Symbol zugänglich). Das Plus-Symbol erlaubt das Aufrufen von Online-Regelsätzen sofern Internet zur Verfügung steht und ein Account erstellt worden ist; andernfalls wird eine Kopie des momentan gewählten Regelsatzes zur Liste hinzugefügt. Die gesamte Liste kann auch in den internen Speicher oder die SD-Karte exportiert oder von dort importiert werden. Der Ordner von dem importiert oder in den exportiert wird, kann in den globalen Einstellungen festgelegt werden. Diese können über die Menüleiste oder auch vom Startbildschirm aus aufgerufen werden.

Beachte, dass die Liste auch automatisch beim Beenden der App lokal gespeichert wird und beim Starten wieder geladen wird, so dass Import und Export nur für Sicherheitskopien oder für die Übertragung der Daten auf andere Geräte mittels SD-Karte nötig ist.

4.3. Regelsätze bearbeiten

Ein langer Druck auf einen Regelsatz öffnet das Kontextmenü. Von dort aus kann der Regelsatz grundlegend geändert werden (Menüpunkte Basis Parameter, Blockarten und Regeln), bewertet und aktualisiert werden (falls der Regelsatz online ist und Internet aktiv), oder gelöscht werden (vom Speicher entfernt und Registrierung von Online-Regelsätzen beendet werden). Aktualisieren bedeutet, dass die Bewertungen, Benutzerzahlen und die gespielte Gesamtzeit vom Netz aktualisiert werden.

Zudem kann die Highscoreliste geleert werden. Bei online Regelsätzen wird sie beim aktualisieren wieder aufgefüllt, aber lokale Punktezahlen werden unwiederbringlich gelöscht. Der Menüpunkt "Anfangszustand" setzt alle Variablenwerte zurück. Das Spiel erscheint wie beim ersten Benutzen. (Dies spielt bei vielen Regelsätzen keine Rolle, da keine Varablen benutzt werden.)

Es gibt noch einen weiteren Kontext-Menüpunkt: "Veröffentlichen". Dieser erscheint aber nur, falls der Regelsatz von einem selbst erstellt wurde (nicht einfach heruntergeladen), wenn Internet zur Verfügung steht und ein Account erstellt wurde, und falls zudem mindestens eine Stunde mit dem Regelsatz gespielt wurde (als Qualitäts-Kriterium: wenn man nicht einmal Lust hat eine Stunde sein eigenes Spiel zu spielen, sollte man es wohl nicht veröffentlichen).

5. Globale Einstellungen

Im Hauptbildschirm gibt es auch einen Knopf um in den Einstellungsbildschirm zu gelangen.

5.1. Networking

Networking aktivieren: Wähle, ob Du nur offline spielen willst, oder veröffentlichte Regelsätze auch online (falls Internet zur Verfügung steht und Du einen Account erstellt hast). Beim Online spielen werden Deine Punktzahlen in die Online Highscore Liste hochgeladen, und Du kannst das Spiel bewerten.

Automatisch synchronisieren: wenn angewählt werden bei online Spielen bei jedem Spielstart der Regelsatz und die Highscores aktualisiert.

Account löschen: Du musst Dein Passwort eingeben um Deinen Account zu löschen. Alle online Highscores und Bewertungen gehen dann allerdings verloren. Du kannst anschließend auch wieder einen neuen Account erstellen. Hast Du Dein Passwort vergessen, wende Dich an admin@tekplace.de

5.2. Daten

Externer Pfad: Wähle mittels des Datei-Explorers einen Ordner aus, der für Import und Export der Regelsatz-Liste verwendet wird. Beachte, dass mit Android 4.4 (KitKat) nur noch sehr beschränkte Bereiche des Speichers verwendet werden können. Auf der SD-Karte ist hier z.B. der Ordner (SD-Pfad)/Android/data/de.tekplace.dyblo/files/ vorgesehen.

Importieren: In welcher Weise sollen Regelsätze vom externen Datenbereich importiert werden? Es kann gewählt werden zwischen den Möglichkeiten:

  • Update Highscores: die lokalen Daten haben Priorität. Nur neue Regelsätze werden importiert. Zudem werden aber die Highscorelisten mit den externen Daten aktualisiert
  • Keine vorhandenen Dateien ändern: wie zuvor, aber nicht einmal die Highscores werden verändert.
  • Überschreiben: die importierten Regelsätze haben Priorität: wenn lokal ein Regelsatz desselben Namens existiert, wird er durch den Exportierten ersetzt.
  • Alle vorhandenen Dateien löschen: nur die importierten Regelsätze sind verfügbar, alle anderen werden gelöscht.

Kopien ignorieren: Wenn ein Regelsatz vom Benutzer verändert wird, wird automatisch eine Kopie des Originals erstellt und in der Liste gespeichert. Wenn Dieser Menüpunkt aktiviert ist, werden diese Kopien beim Verlassen der App automatisch gelöscht (ändere den Namen der Kopie um das zu vermeiden: gelöscht werden Regelsätze, die mit "(COPY)" enden).

Regelsatzliste zurücksetzen: Alle Regelsätze werden gelöscht und die mitgelieferten Regelsätze wiederhergestellt. Registrierte Online-Regelsätze werden beim nächsten App-Start wieder heruntergeladen.

5.3. Optimierung

Auslastung in Prozent: Wieviel der Rechenleistung, die der App vom Gerät zur Verfügung gestellt wird, soll genutzt werden? Dies sollte typischerweise um die 70 sein, kann aber auch hoch oder heruntergestuft werden. Bei niedrigem Prozentsatz kann das Spiel ruckelig werden, aber die Batterielaufzeit wird erhöht.

Transform-Auslassung: Beim Spielablauf werden manchmal Blockarten in andere "Transformiert". Diese Transformation ist rechenaufwendig und kann mit diesem Menüpunkt "ruckeliger" gemacht werden um das Spiel selbst weniger ruckelig zu machen. Ein Wert von 0 ist Standard, je höher der Wert (bis zu maximal 7), desto ruckeliger sind Transformationen, aber desto besser läuft das Spiel allgemein.

FPS anzeigen: Erlaubt "Frames per second" anzuzeigen: wieviele Bilder werden im Spiel pro Sekunde berechnet. Idealerweise sollte der Wert bei mindestens 30 liegen, kann aber auch bei schwächeren Geräten oder rechenintensiven Regelsätzen niedriger werden. Unter 20 wird das Spiel unangenehm ruckelig. In dem Fall, Auslastung auf 100 Prozent stellen und Transform-Auslassung auf einen Wert über 0.

5.4. Look and feel

Sortiere Listen nach: Sowohl die allgemeine Regelsatzliste, als auch die Online-Regelsatzliste (beim drücken auf "+" in der Menüleiste der Regelsatzliste, falls Networking aktiviert) können in verschiedener Weise sortiert werden. Z.B. nach Datum um die neuesten Regelsätze zuerst darzustellen.

Bewegungs-Geschwindigkeit: Wie stark soll das Bewegen des aktuellen Blocks beschleunigt werden? Ein Wert von 100 bedeutet keine Beschleunigung, ein Wert von 200 doppelte Geschwindigkeit, etc.

Warnen wenn das Spiel verloren geht: Wenn das momentane Spiel unterbrochen wird, so wird es gespeichert und kann später fortgesetzt werden. Sollte jedoch die Regelsatzliste gestarted werden, so geht das gespeicherte Spiel verloren. Wenn dieser Punkt angewählt ist, so wird mit einem Hinweis vor diesem Spielverlust gewarnt.

5.5. Weitere Punkte

Neue Regeln leeren: Wenn für einen Regelsatz die Regeln bearbeitet werden, können auch neue Regeln (oder Aktionen) hinzugefügt werden. Normalerweise wird dabei eine Regel (oder Aktion) kopiert. Wenn dieser Menüpunkt angewählt ist, wird eine leere Regel (oder Aktion) hinzugefügt.

About: Kurze Information des Herausgebers

6. Regeln ändern

Durch langes Drücken auf einen Regelsatz wird das Kontextmenü geöffnet, in dem es drei Punkte zum Ändern der Regeln gibt: Basis Parameter, Blockarten und (Event-)Regeln.

Sollte der Regelsatz "wesentlich" verändert werden, so wird er zurückgesetzt (Highscore-Liste und Gesamt-Spieldauer auf Null gesetzt) und in der Liste ein Backup erzeugt. Dabei wird der Name eines veröffentlichten Regelsatzes beibehalten und der Geänderte hat einen veränderten Namen; ein nicht veröffentlichter Regelsatz wird hingegen zur Kopie gemacht, und der Veränderte trägt den ursprünglichen Namen.

6.1. Basis Parameter

Hier können folgende Einstellungen vorgenommen werden (bei kleinen Bildschirmen ist die Dialogbox scrollbar):

  • Der Name des Regelsatzes
  • Vorder- und Hintergrundfarbe (jeweils Rot- Grün- und Blau-Anteile). Diese beeinflussen sowohl die Darstellung in der Liste, als auch auf dem Spiel-Bildschirm.
  • Dimension des Spielfeldes
  • Verfügbare Zeit zum Ablegen eines Blockes (in Millisekunden)
  • Zeitintervall von periodisch auftretenden Ereignissen (in Millisekunden)
  • Vorgabe: wieviele Blöcke sollen schon bei Spielstart auf dem Feld liegen?
  • Blockabstand: Wieviele Pixel sollen zwischen benachbarten Feldern liegen?

6.2. Blockarten

Es erscheint eine (möglicherweise scrollbare) Liste der verschiedenden Block-Arten, wobei der erste Eintrag die Hintergrund-Blockart ist. Durch einfaches Drücken kann eine Blockart geändert werden, durch langes Drücken wird ein Kontext-Menü geöffnet, mittels dessen Blockarten gelöscht oder Neue eingefügt werden können.

Bei der Änderung von Blockarten gibt es folgende Einstellungen:

  • Der Stil (Darstellungsart)
  • Die "Höhe" (beeinflusst das genaue Aussehen)
  • Die Gewichtung: ein Ganzzahlwert, der bestimmt, wie wahrscheinlich es ist, dass diese Blockart als aktuell abzulegender Block erscheint. Hat eine Blockart Gewichtung 1, ein anderer 3, so ist es dreimal so wahrscheinlich, dass man Letztere erhält.
  • Eigenschaft "blockierend": wenn angewählt, kann man sich nicht über das Feld bewegen, auf dem ein solcher Block liegt.
  • Eigenschaft "empfänglich": wenn angewählt, darf auf einem solchen Feld der aktuelle Block abgelegt werden.
  • Die Farbe (Rot- Grün- und Blau-Anteile)

6.3. Ereignis-Regeln

Nun wird es interessant. Durch Anwählen des Punktes "Regeln" im Kontext-Menü eines Regelsatzes wird eine Liste der entsprechenden Regeln geöffnet. Einfaches Drücken auf eine Regel erlaubt deren Bearbeitung, ein langer Druck öffnet das Kontextmenü.

Im Kontextmenü kann man neben dem Löschen der Regel und dem Einfügen neuer Regeln auch die Regel auf das Clipboard kopieren oder von dort aus überschreiben. Dadurch ist es möglich, Regeln zwischen verschiedenen Regelsätzen auszutauschen.

Beim Bearbeiten einer Regel liegt im unteren Bereich die Liste der Aktionen. Wiederum kann durch einfache Auswahl einer Aktion diese bearbeitet werden, und durch langes Drücken öffnet sich wieder ein Kontextmenü zum Einfügen, Löschen, Kopieren, Überschreiben von Aktionen.

6.3.1 Allgemeiner Aufbau von Ereignis-Regeln

Eine Ereignis-Regel wird, wie der Name schon sagt, angewendet, wenn ein bestimmtes Ereignis im Spiel stattfindet. Sie ist zusammengesetzt aus den folgenden Teilen:

  • Die Ereignisart
  • Ein möglicher Name für die Regel
  • Eine Bedingung, formuliert als mathematischer Ausdruck
  • Mögliche Zusätze zur Bedingung (Maximum, Minimum, Wahrscheinlichkeit)
  • Eine Liste von Aktionen

Regeln werden wie folgt ausgeführt: Tritt ein Ereignis ein (siehe 6.3.2), so werden alle Regeln der entsprechenden Ereignisart (in der Reihenfolge ihrer Definition) betrachtet. Für jede dieser Regeln wird ihre Bedingung berechnet, und wenn diese den Wert "wahr" ergibt, werden alle Aktionen, die in der Regel aufgelistet sind (in der Reihenfolge ihrer Definition) ausgeführt.

Die Berechnung der Bedingung erfolgt folgendermaßen: Der in der Regel angegebene mathematische Ausdruck wird FÜR JEDE einzelne Position des Spielfeldes berechnet (technisch gesehen werden dafür jeweils die Lauf-Variablen RX, RY gesetzt, siehe 6.3.3.5). Wenn für eine Position ein Wert ungleich Null ("wahr") errechnet wird, so gilt diese als Teil des berechneten Gebietes. Ist das Gebiet so groß, wie durch das in der Regel festgelegte Maximum und Minimum vorgegeben, so gilt die Bedingung als erfüllt, und die Aktionen werden ausgeführt. Darüber hinaus kann noch eine Wahrscheinlichkeit vorgegeben sein, mit der diese Regel eintreten soll (falls die Bedingung erfüllt ist).

Sind Maximum und Minimum nicht gesetzt (d.h. haben den Wert -1) so gilt die Bedingung als erfüllt, wenn das berechnete Gebiet nicht leer ist.

6.3.2 Ereignisarten

Folgende Ereignisarten gibt es (in Klammern die Abkürzungen, wie sie in der Regel-Liste erscheinen):

  • Das Start-Ereignis (S) tritt genau einmal im Spiel auf, nämlich bevor es beginnt. Hier kann man beispielsweise eine Anfangskonfiguration des Spielfeldes erzeugen.
  • Das Transformationsereignis (T) tritt dann ein, wenn ein Block auf dem Spielfeld seine Transformation in eine andere Blockart vollzogen hat.
  • Das Bewegungsereignis (M) tritt ein, wenn der Spieler den aktuellen Block auf ein neues Feld bewegt.
  • Das Ablege-Ereignis (D) tritt ein, wenn der Spieler dabei ist, seinen Block abzulegen. Der genaue Ablauf des Ablegens: erst wird eine mögliche Transformation auf dem Ablegefeld gestoppt. Dann wird der Block auf das Feld gelegt. Dann wird die aktuell bewegbare Blockart zufällig neu festgesetzt. Erst danach werden alle Ablege-Regeln in der Reihenfolge ihrer Definition angewendet.
  • Das periodische Ereignis (P) tritt in regelmäßigen Zeitabständen ein (typischerweise jede Sekunde einmal). Der Zeitabstand ist in den Basis-Parametern festlegbar.

In der Regel-Liste sind überdies Gebiets-Definitionen (A) aufgelistet. Solche sind nicht wirklich Ereignis-Regeln, aber erlauben Ausdrücke zu benennen (mittels des "Regel-Namens"), die dann in anderen Ausdrücken mittels dieses Namens verwendet werden können. Dies führt zu mehr Übersichtlichkeit in der Formulierung der Regeln.

6.3.3 Ausdrücke und Bedingungen

Unter Ausdrücken verstehen wir Ganzzahlige Ausdrücke. Bedingungen sind Ausdrücke, die genau dann als wahr interpretiert werden, wenn sie einen Wert verschieden von Null haben. Ausdrücke sind aufgebaut aus Klammern, Zahlen, Operatoren (z.B. + und -), Konstanten (vorgegebene Parameter wie etwa die Größe des Spielfeldes), Variablen, Namen von bereits definierten Ausdrücken, und Funktionen.

Es ist wichtig zu verstehen, dass jede Position auf dem Spielfeld mehrere Informationen enthält:

  1. Die momentan gültige Blockart
  2. Die Transformations-Blockart
  3. Die Transformations-Rate
  4. Der aktuelle Transformations-Zustand
  5. Dekoration
  6. Markierung

Der grundlegende Mechanismus ist wie folgt: Wenn die Transformations-Rate nicht Null ist, findet eine Transformation der momentan gültigen Blockart in die Transformations-Blockart statt. Wie weit die Transformation bereits fortgeschritten ist, wird durch den aktuellen Transformations-Zustand beschrieben. Ist die Rate positiv beginnt der Zustand bei Null und die Transformation ist beendet, wenn er den Wert 1000 erreicht. Ist die Rate negativ, so wird bei 1000 begonnen und auf Null heruntergezählt. Die Größe der Rate beschreibt, wie schnell die Transformation vonstatten geht.

Dekoration ist ein weiterer Wert, der benutzt wird, um besondere Zustände von Positionen zu beschreiben. Bei einer Dekoration von Null ist nichts sichtbar, eine Dekoration von -1 wird als blinkender Kreis (über möglichen existierenden Blöcken) dargestellt.

Markierungen werden gesetzt, wenn in Regel-Bedingungen Gebiete berechnet werden (Markierung 0 oder 1, je nachdem ob eine Position zu dem berechneten Gebiet gehört).

6.3.3.1 Gebiete

Eine Bedingung B kann ein Gebiet G (Gesamtheit von Positionen) des Spielfelds beschreiben: eine Position (x,y) gehört zu G, wenn B wahr ist (d.h. einen Wert ungleich Null hat), wenn wir RX gleich x und RY gleich y annehmen (RX und RY sind spezielle Konstanten, die wir in Ausdrücken verwenden können; siehe Abschnitt 6.3.3.4: Lauf-Variablen). Da wir nun also Gebiete definieren können, ist es möglich, Aktionen zu definieren, wie z.B. "Eliminiere alle Blöcke im angegebenen Gebiet". Beispiele:

  • Der Ausdruck RX=2 beschreibt eine vertikale Reihe auf dem Spielfeld: alle Positionen mit x-Koordinate gleich 2.
  • Der Ausdruck RX<CX+2 & RX>CX-2 & RY<CY+2 & RY>CY-2 beschreibt eine 3 x 3 - Fläche mit Mittelpunkt (CX,CY). (Bemerkung: CX, CY sind Konstanten, die die aktuelle Position auf dem Spielfeld beschreiben).

6.3.3.2 Operatoren

  • + : Plus
  • - : Minus (auch als unäre Operation)
  • * : Multiplikation
  • / : Division
  • % : Modulo (Rest bei Ganzzahldivision)
  • & : Logisches Und
  • | : Logisches Oder
  • ! : Logische Negation
  • = : Gleichheit
  • <> : Ungleichheit
  • < : Strikt kleiner
  • > : Strikt größer
  • <= : Kleiner oder gleich
  • >= : Größer oder gleich

6.3.3.3 Spiel-Parameter

  • W : Breite des Spielfeldes
  • H : Höhe des Spielfeldes
  • TIME : Zeit in Millisekunden zum Ablegen eines Blocks
  • TIMELEFT : Momentan verbleibende Zeit zum Ablegen eines Blocks in Millisekunden
  • BGCOLOR : Aktuelle Hintergrundfarbe
  • FGCOLOR : Aktuelle Vordergrundgrundfarbe
  • DEPTH : Anzahl der Block-Arten (ohne Hintergrund-Block)

6.3.3.4 Lauf-Variablen

Bei der Berechnung von Gebieten mittels eines Ausdrucks A wird das gesamte Spielfeld Position für Position untersucht. Die Konstanten RX, RY werden auf diese Position gesetzt und A wird berechnet. Die Position wird zum Gebiet gezählt, wenn das Resultat der Berechnung wahr ist (d.h. ein Wert ungleich Null).

  • RX : Die bei einer Gebietsberechnung verwendete x-Koordinate
  • RY : Die bei einer Gebietsberechnung verwendete y-Koordinate
  • RT : Die Block-Art auf der Position (RX,RY)
  • RG : Die Transformations-Block-Art auf der Position (RX,RY)
  • RR : Die Transformations-Zuwachsrate auf der Position (RX,RY)
  • RS : Der aktuelle Transformations-Wert auf der Position (RX,RY)
  • RD : Dekoration auf der Position (RX,RY)
  • RM : Markierung auf der Position (RX,RY)

6.3.3.5 Bewegungsblock

Konstanten für den Block, den der Spieler bewegt.

  • CX : x-Koordinate des Bewegungsblocks
  • CY : y-Koordinate des Bewegungsblocks
  • CT : Block-Art des Bewegungsblocks
  • FX : x-Koordinate des Bewegungsblocks beim letzten Ablegen
  • FY : y-Koordinate des Bewegungsblocks beim letzten Ablegen
  • FT : Block-Art des Bewegungsblocks beim letzten Ablegen

6.3.3.6 Transformations-Block

Bei Transformations-Events (Ereignisse, wenn die Transformation eines Blockes des Spielfeldes in einen Block anderer Art vollzogen ist), sind die Daten über den transformierten Block über folgende Konstanten zugänglich:

  • TX : x-Koordinate des Transformations-Blocks
  • TY : y-Koordinate des Transformations-Blocks
  • TT : Die Block-Art auf der Position (TX,TY)
  • TG : Die Transformations-Block-Art auf der Position (TX,TY)
  • TR : Die Transformations-Zuwachsrate auf der Position (TX,TY)
  • TS : Der aktuelle Transformations-Wert auf der Position (TX,TY)
  • TD : Dekoration auf der Position (TX,TY)
  • TM : Markierung auf der Position (TX,TY)

6.3.3.7 Mathematische Funktionen

  • ABS(x) : Absolutwert (selber Wert, aber positiv)
  • MIN(x,y) : Das Minimum von x und y
  • MAX(x,y) : Das Maximum von x und y
  • SIGNUM(x) : 1 wenn x positiv, 0 wenn x=0, -1 wenn x negativ
  • RANDOM(x) : Ein Zufallswert zwischen 0 und x-1
  • DISTINCTION(x,y,z) : Falls x nicht Null, dann hat der Ausdruck den Wert von y, ansonsten den Wert von z

6.3.3.8 Funktionen für das Spielfeld

  • T(x,y) : Die Block-Art auf Position (x,y)
  • G(x,y) : Transformations-Block-Art auf Position (x,y)
  • R(x,y) : Transformations-Zuwachsrate auf Position (x,y)
  • S(x,y) : Aktueller Transformations-Wert auf Position (x,y)
  • D(x,y) : Dekoration auf Position (x,y)
  • M(x,y) : Markierung auf Position (x,y)

6.3.3.9 Funktionen für Block-Arten

  • WEIGHT(x) : Gewichtung von Block-Art x
  • COLOR(x) : Farbe von Block-Art x
  • HEIGHT(x) : Höhe von Block-Art x
  • STYLE(x) : Stil von Block-Art x
  • SOLID(x) : 1 wenn Block-Art x blockierend ist, ansonsten 0
  • RECEPTIVE(x) : 1 wenn auf Block-Art x abgelegt werden kann, ansonsten 0

6.3.3.10 Weitere Funktionen

  • BLOCKED(x,y) : 1 wenn Position (x,y) blockiert ist, sonst 0. Eine Position ist blockiert, wenn alle vier Nachbarpositionen von blockierenden Blöcken belegt sind. Bemerkung: diese Funktion kann auch "von Hand" durch einen geeigneten Ausdruck definiert werden, ist jedoch besser lesbar (und schneller ausgewertet) in dieser Form.
  • RESCUEME : 1, wenn alle vier an die aktuelle Position angrenzenden Positionen blockiert sind im Sinne von BLOCKED(x,y).
  • NEAR(x) : Äquivalent zu CX <= RX + x & CX >= RX - x & CY <= RY + x & CY >= RY - x. Mit anderen Worten, 1, wenn (RX,RY) sich in einer "Radius x Umgebung" von (CX,CY) befindet, sonst 0.
  • COUNT(x) : Die Anzahl von Blockart x Blöcken auf dem Feld.

6.3.4 Aktionen
  • Variablenname(x): "Variablenname" steht hier für eine beliebige Zeichenkette, die keine andere Aktion beschreibt. Die Variable mit Namen "Variablenname" wird auf den Wert x gesetzt.
  • WIN: Das Spiel endet als "gewonnen".
  • LOSE: Das Spiel endet als "verloren".
  • SET(x,y,z): Für alle Elemente des Gebietes, das durch x beschrieben wird, wird eine Transformation hin zur Blockart y eingeleitet, die z Millisekunden lang dauert.
  • SET1(x,y,z): Für ein einziges zufällig gewähltes Element des Gebietes, das durch x beschrieben wird, wird eine Transformation hin zur Blockart y eingeleitet, die z Millisekunden lang dauert.
  • SETD(x,y): Für alle Elemente des Gebietes, das durch x beschrieben wird, wird die Dekoration auf y gesetzt.
  • SETD1(x,y): Für ein einziges zufällig gewähltes Element des Gebietes, das durch x beschrieben wird, wird die Dekoration auf y gesetzt.
  • SCORE(x): Die aktuelle Punktzahl wird um x erhöht.
  • TSET(x): Setze die Blockart des aktuell bewegbaren Blockes auf x.
  • XSET(x): Setze die x-Position des aktuell bewegbaren Blockes auf x.
  • YSET(x): Setze die y-Position des aktuell bewegbaren Blockes auf x.