Interaktives Tetrisspiel

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Aufgabenstellung

Die Aufgabe war es ein interaktives Tetrisspiel zu erstellen, das sich mit Hilfe von der Spieler- und dessen Handposition steuern lässt.


Spielfeldaufbau

Spielfeldaufbau tetris.JPG

Komponenten

Hardwarekomponenten

- Kamera
- Beamer
- PC/Laptop

Softwarekomponenten

- Eyesweb
- Adobe Flash
- Flosc
- Java Runtime Environment

Programmablauf

Tetrisablauf.JPG

Die Kameradaten werden von Eyesweb als OSC-Nachricht via UDP an Flosc weitergeben. Um eine Kommunikation zwischen EyesWeb und Flash zu ermöglichen, wird nun der Flosc-Server zwischengeschaltet. Flosc wiederum schickt die Daten als XML-Nachricht via TCP an das, in Flash realisierte, Tetris-Spiel.


OSC Eyesweb.PNG


Eyesweb wertet die Daten, die mit der Kamera aufgenommen werden, aus und schickt sie als OSC Nachricht weiter. Wie hier im Bild links zu sehen, wird die Information an den Port 7000 gesendet und mit dem Namen "/drehung" versehen. 


Java Gateway.PNG


Der Flosc-Server wird mittels der Command Prompt (Kommandozeile) aktiviert. Zuerst greift man auf den Ordner zu, indem die Flosc Datei abgespeichert ist und danach wird der Server (Gateway) gestartet, indem man den Eingangs- und Ausgangsport hinzufügt. In unserem Fall ist 7000 der Eingangsport und 3000 der Ausgangsport.


Parse Message.PNG


Durch die Funktion "parseMessages(node)", die wir aus der Programmierung von Flosc kopiert haben und in die Programmierung von Tetris eingefügt haben, haben wir erst überhaupt ermöglicht, dass die Flash Applikation die Daten vom Flosc Server empfangen und diese korrekt zuweisen kann.

Steuerung

Drehnung eines Tetrissteins

Mit dem von der Kamera aufgenommenen Bild wird mit Eyesweb die Hintergrundsubtraktion durchgeführt. Anschließend wird der Höchstpunkt berechnet. Überschreitet der Höchstpunkt einen bestimmten - vorher festgelegten - y-Wert wird mittels OSC der Wert "1" weitergegeben, ansonsten wird der Wert "0" an Flosc übertragen.

Y-Wert Berechnung.JPG


Position eines Tetrissteins

Ermittlung-position.JPG

Befindet sich der Spieler in den mittleren 40% des Spielfeldes wird der Tetrisstein nicht bewegt. Bewegt sich der Spieler in einen der äußeren Spielbereiche - je 30% links und rechts - bewegt sich der Tetrisstein jeweils in die Bewegungsrichtung. Hierbei wird in zwei Geschwindigkeitsstufen unterschieden, der äußerste Bereich bewegt den Stein schneller.

Schwerpunktberechnung2.JPG

Das aufgenommen Livebild wird hier gefiltert, von einem, vorher ohne Objekt (hier: Person) aufgezeichneten, Hintergrund abgezogen. Durch die Hintergrundsubtraktion kann die Person freigeschnitten und deren Schwerpunkt ermittelt und zur Anschaulichkeit in einem Koordinatensystem angezeigt werden. Schließlich wird diese Information als OSC Nachricht abgeschickt.


Bewegen.PNG


Das Bild zeigt einen Ausschnitt aus Programmierung des Spiels, welches in ActionScript verfasst wurde. Um eine Drehung zu erzeugen, muss der, von Eyesweb eingehende, x-Wert (Schwerpunkt) einen fest definierten Wert überschreiten. Das Problem dabei ist, dass ein passender Wert (z.B. 300) mehrfach pro Sekunde eintreffen würde und dadurch der Stein sich rasend schnell nach rechts bewegen würde. Um dieses Problem zu lösen, wurde hier ein Index eingeführt. Dieser sorgt dafür, dass nur der erste passende Wert, der eintrifft, berücksichtigt wird (hierbei ist der Index "0") und die darauf Folgenden vernachlässigt werden. Nach jedem Durchlaufen der If-Abfrage wird der Index um "1" erhöht. Ab einer gewissen Indexgröße, wird dieser wieder auf "0" gestellt, was wieder ein Verschieben auslösen kann. 

Weblinks

Interner Bereich