Phryx
29.11.2012, 07:20
EDIT: In Post 4 gibts einen Link zu einer Version die ich gemacht habe. kann jeder mal testen, dems gefällt.
Hallo,
habe folgendes Problem bzw Fragen zu Lösungsansätzen.
Ich möchte ein Minispiel in einem Dachboden machen. Der Dachboden soll aufgeräumt werden weil überall Objekte (4 verschiedene) rumstehen. Die Objekte werden bei Betreten des Raumes automatisch verteilt bzw. wenn das Rätsel unlösbar wird setze ich sie auch per Hand.
Durch schieben und tauschen können Objekte beseitigt werden. Das bedeutet man verschiebt oder tauscht ein Objekt (man kann lediglich in die Richtung tauschen in die der Held sieht) möglichst so das 3 gleiche nebeneinander sind. Dadurch verschwinden alle drei.
Vereinfacht
xyx
xxo
oox
Der Held steht vor dem y und tauscht es mit dem x wodurch die erste Reihe verschwindet.
Durch die automatische Verteilung werden auch Löcher gesetzt wodurch man durch schieben auch vorwärts kommt.
Meine Frage bezieht sich nun auf die Umsetzung. Mein Ansatz war.
Jedes Feld auf der Map ist ein Event mit 5 Statusen. Status 1-4 sind die verschiedenen Objekte, Status 5 leer. Die Statuse werden mit Variablen bei den Event Conditions abgefragt. Oben zum Beispiel: y hat stets den Status Variable 1, x 2 und o 3
Wenn ich ein Objekt anklicke wird zunächst das Facing abgefragt. Dann ob man schieben oder tauschen will bzw. kann.
Angenommen wie oben möchte man das y tauschen. Der y Statuswert wird in eine temp Variable gespeichert. Anschließend bekommt sie den Wert vom x. Aus der temp variable wird dem x der y Wert zugewiesen. (Hier schon mal eine Frage kann ich variablenwerte tauschen??) Ist dies geschehen wird ein Call Event aufgerufen das überprüft ob sich so eine Reihe gebildet hat. Jedes Event auf der Karte hat ein eigenes Call Event. Somit hätten wir im oberen Fall 9 Call Events. Aber für den yx tausch brauchen wir ja nur die Call Events 2 und 5 aufrufen. (Nummerierung von oben links ausgehend)
In diesem Call Event wird nun mögliche Reihenkombinationen abgefragt. Und zwar so:
Call Event 2
Wenn 2 hat Status x (nach Tausch) ist 1 und 3 auch x, wenn ja werden sie auf Status 5 also leer gesetzt. Ausserdem noch die Kombination Wenn 2 hat Status x (nach Tausch) ist 5 und 8 auch x, wenn ja werden sie auf Status 5 also leer gesetzt.
Call Event 5
Wenn 5 hat Status y (nach Tausch) ist 4 und 6 auch y, wenn ja werden sie auf Status 5 also leer gesetzt. Ausserdem noch die Kombination Wenn 5 hat Status y (nach tausch) ist 2 und 8 auch y, wenn ja werden sie auf Status 5 also leer gesetzt.
Der Ansatz ist also, wenn man ein Objekt tauscht, verwandelt damit nur seinen Status und nicht den Objektstandort.
Das klingt alles recht simpel aber wenn man nun 100 Objekte auf dem Dachboden hat, wird daraus schnell ein rießiger Codewirrwarr durch immens viele Abhängigkeiten. Deswegen meine Frage. Wenn ich y anklicke und mit dem x unter ihm tausche. Gibt es eine Möglichkeit einfacher abzufragen ob die neugesetzten Objekte jetzt irgendwo eine Reihe ergeben?
Vielleicht kennt ja jemand auch ein Game wo jemand so ein Minispiel umgesetzt hat.
Grüße Phryx
Hallo,
habe folgendes Problem bzw Fragen zu Lösungsansätzen.
Ich möchte ein Minispiel in einem Dachboden machen. Der Dachboden soll aufgeräumt werden weil überall Objekte (4 verschiedene) rumstehen. Die Objekte werden bei Betreten des Raumes automatisch verteilt bzw. wenn das Rätsel unlösbar wird setze ich sie auch per Hand.
Durch schieben und tauschen können Objekte beseitigt werden. Das bedeutet man verschiebt oder tauscht ein Objekt (man kann lediglich in die Richtung tauschen in die der Held sieht) möglichst so das 3 gleiche nebeneinander sind. Dadurch verschwinden alle drei.
Vereinfacht
xyx
xxo
oox
Der Held steht vor dem y und tauscht es mit dem x wodurch die erste Reihe verschwindet.
Durch die automatische Verteilung werden auch Löcher gesetzt wodurch man durch schieben auch vorwärts kommt.
Meine Frage bezieht sich nun auf die Umsetzung. Mein Ansatz war.
Jedes Feld auf der Map ist ein Event mit 5 Statusen. Status 1-4 sind die verschiedenen Objekte, Status 5 leer. Die Statuse werden mit Variablen bei den Event Conditions abgefragt. Oben zum Beispiel: y hat stets den Status Variable 1, x 2 und o 3
Wenn ich ein Objekt anklicke wird zunächst das Facing abgefragt. Dann ob man schieben oder tauschen will bzw. kann.
Angenommen wie oben möchte man das y tauschen. Der y Statuswert wird in eine temp Variable gespeichert. Anschließend bekommt sie den Wert vom x. Aus der temp variable wird dem x der y Wert zugewiesen. (Hier schon mal eine Frage kann ich variablenwerte tauschen??) Ist dies geschehen wird ein Call Event aufgerufen das überprüft ob sich so eine Reihe gebildet hat. Jedes Event auf der Karte hat ein eigenes Call Event. Somit hätten wir im oberen Fall 9 Call Events. Aber für den yx tausch brauchen wir ja nur die Call Events 2 und 5 aufrufen. (Nummerierung von oben links ausgehend)
In diesem Call Event wird nun mögliche Reihenkombinationen abgefragt. Und zwar so:
Call Event 2
Wenn 2 hat Status x (nach Tausch) ist 1 und 3 auch x, wenn ja werden sie auf Status 5 also leer gesetzt. Ausserdem noch die Kombination Wenn 2 hat Status x (nach Tausch) ist 5 und 8 auch x, wenn ja werden sie auf Status 5 also leer gesetzt.
Call Event 5
Wenn 5 hat Status y (nach Tausch) ist 4 und 6 auch y, wenn ja werden sie auf Status 5 also leer gesetzt. Ausserdem noch die Kombination Wenn 5 hat Status y (nach tausch) ist 2 und 8 auch y, wenn ja werden sie auf Status 5 also leer gesetzt.
Der Ansatz ist also, wenn man ein Objekt tauscht, verwandelt damit nur seinen Status und nicht den Objektstandort.
Das klingt alles recht simpel aber wenn man nun 100 Objekte auf dem Dachboden hat, wird daraus schnell ein rießiger Codewirrwarr durch immens viele Abhängigkeiten. Deswegen meine Frage. Wenn ich y anklicke und mit dem x unter ihm tausche. Gibt es eine Möglichkeit einfacher abzufragen ob die neugesetzten Objekte jetzt irgendwo eine Reihe ergeben?
Vielleicht kennt ja jemand auch ein Game wo jemand so ein Minispiel umgesetzt hat.
Grüße Phryx