Shockwave Onlinegame "PagMan"

PacMan-Varianten gibt es unzählige und in immer wieder neuen Formen. Das Spiel ist einfach, fesselnd und kann in immer wieder neuen Designs abgewandelt werden. So auch diese Variante.

Das Spielfeld (Labyrinth) wird per Zufallsgenerator erzeugt und die Zahl der Gänge ist mit dem Level verbunden: Es wird immer schwieriger, den Bösen zu entkommen; einerseits, weil es immer weniger Abzweigungen gibt, andererseits, weil die Bösen immer schneller und klüger werden. Abhilfe schaffen die Bonuspunkte: Superschild (rot) macht unverwundbar, Superspeed (orange) macht schnell, mit Superkraft (blau) kann man die Bösen vernichten.
Das Labyrinth wird an die Größe der Stage angepasst, diese muss durch 35 teilbar sein (= die Breite der Felder). Die wesentlichen Gestaltungselemente sind in der CastLib erkennbar, in der Regel müssen die Namen beibehalten werden.


Das Movie ist mit Director 7 gemacht, läuft aber auch mit Director 8.5, Director MurX ;-) habe ich nicht. Ich habe mich nicht immer an die Dot.Syntax gehalten, weil sie unter Dir 7 nicht sauber läuft (vielleicht bin ich auch nur altmodisch ;-). Das Movie kommt aus der Praxis und ist nicht überall "stringent" und idiotensicher gemacht, wer eine fertige Lösung sucht, wird Probleme haben.
Ein echtes "Pfui" sind fixe Spritenummern, die gelegentlich im Code stehen. Shame on me.


Zur Sache:

Handler Feldberechnen
Um das Labyrinth per Zufall zu erzeugen, läuft ein "berechneter Pacman" einfach zufällig im Spielfeld umher und trägt dabei die genommenen Ausgänge in die Liste FeldList ein. Das tut er abhängig vom Level eine bestimmte Anzahl von Feldern lang. Wenn er viele Felder lang läuft, haben viele Felder viele Ausgänge, wenn er weniger läuft, gibt es wenige Ausgänge.
Wenn man im Handler NeuStart die Voreinstellung für Level (zb auf 6) ändert, und dann das Movie startet, kann man das gut beobachten.

Handler Feldaufbauen
Das Labyrinth wird aus 16 verschiedenen Bildern ("0000" bis "1111" - die Ausgänge im Uhrzeigersinn) zusammengebaut und dann mittels screentomember (member 10 - "Grund") auf die Stage gelegt. Die Information, welche Felder welche Ausgänge haben, steht in der Liste FeldList, das Abbild des Labyrinths trägt nichts zum Spielverlauf bei.
Auf "virtuelle Sprites" habe ich verzichtet, in der Praxis geht ein paar mal Copy&Paste schneller.

Handler Futterberechnen
Natürlich liegt es nahe, das "Futter" mittels Trails zu zeichnen, das geht aber nicht, weil ja auch die Bösen unterwegs sind. Also einzelne Sprites. Solange Sprites nicht bewegt werden, wirken sie sich nicht negativ auf die Rechenleistung aus, es spricht also nichts gegen 900 Sprites. Die Position wird in die FutterList eingetragen.

Verhalten boesewandern/PacManWandern
Da diese Verhalten pixelorientiert sind, werden sie pro Frame mehrmals durchlaufen. Lingo-Code wird sehr flott interpretiert, der Aufbau der Stage hingegen kann sich aber mitunter etwas ziehen. Deshalb wurde nicht die Framerate erhöht - 30 Frames/Sekunde reichen allemal - sondern nur die Berechnung mehrmals durchgeführt. Das Spiel läuft also flüssiger. Im Übrigen tun diese 2 Behaviors genau das, was man vom Namen her erwarten würde.

Handler spielStatus
Manches muss nicht wirklich bei jedem Frame gemacht werden, deswegen wird hier eine Variable gezählt und nur bei bestimmten Werten eine Aktion ausgeführt.

Steuerung:
Über die Pfeiltasten wird die Richtung vorgegeben, die bei der nächsten Möglichkeit genommen wird. Ansonsten wird eine Richtung zufällig ausgesucht, wenn der gerade Weg nicht möglich ist.

Kleinigkeiten:
Bei StopMovie wird das Bild des Labyrinths wieder durch ein anderes (kleines) Bild ersetzt, sonst würde das DCR unnötig aufgebläht. Deswegen sieht das Spielfeld beim Stop plötzlich wieder etwas mager aus.
Ansonsten: Anschauen, ändern, besser machen, mir Link mailen.

 


PagMan
Nutzung: Sie können diese Datei downloaden und damit machen was Sie wollen, also auch gewerblich nutzen. Falls Sie etwas Feines daraus gemacht haben, senden Sie mir den Link - ich schaue gerne, was so passiert. Verbesserungsvorschläge werden hier veröffentlicht - Fragen dazu kann ich aber (meistens) nicht beantworten.
Wenn Sie nett sind, setzen Sie einen Link auf diese Site.

Weitere Director Tutorials und Beispiele:

3D-Lingo:
Gesunde Natur für Director Entwickler

Trotz/Mit Lingo:
Movie als Video ausgeben

3D-Lingo:
Kleine Slideshow

Vectorforms:
Tortendiagramme mit Director

Playlist zusammentragen:
Filescanner (mp3)

Lingo für Einsteiger:
Kleines Quiz

Lingo-Basics:
Zufälle mit random()

Vectorforms:
Zappelnder Pfeil

Quads:
Bilder zerlegen und verzerren

Statistik:
Listen glätten und darstellen

Mini-Google
Schnelle Suche durch Indizierung

Zeichnen:
Schnellere Linien mit Vectorforms

Onlinegame:
Pagman mit zufälligem Spielfeld

 

  zurück    [ home ]   [ interactive design ]   [ tutorials ]   [ praxis ]

www.beesign.com - interactive design in wien