Ergebnis 1 bis 8 von 8

Thema: Bingo/Tetrisminispiel - Löungsvorschläge gesucht bzw. meinen Ansatz verbessern :)

  1. #1

    Bingo/Tetrisminispiel - Löungsvorschläge gesucht bzw. meinen Ansatz verbessern :)

    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

    Geändert von Phryx (30.11.2012 um 04:10 Uhr)

  2. #2
    Zitat Zitat
    Hier schon mal eine Frage kann ich variablenwerte tauschen??
    Nein. So wie du das machst ist die einzige Möglichkeit für den Maker. Eventuell ist das mit Destiny oder DynRPG möglich, aber das ist ein bisschen umständlich und würde sich nicht lohnen. Außerdem kannst du diese temporäre Variable ja noch für andere Sachen gebrauchen.

    Ich nehme mal an, dass bei deinem Minispiel nachher alles "weg" sein soll oder? Daher ist das Beispiel nicht optimal, da man es nicht lösen kann. Es bleiben 2x und y übrig, aber davon einmal abgesehen...man versteht wie du das ganze meinst.

    Eine Frage...warum benutzt du neun verschiedene Events um das ganze abzufragen ? Das ganze würde doch auch mit einem Event funktionieren.

    So direkt fällt mir kein Weg ein wie man das irgendwie effizient und mit wenig Eventcodeaufwand alles abfragen kann. Eventuell wenn du noch ein paar Variablen und Pointer zur Hilfe nimmst, aber du musst ja wissen welches Objekt du gerade abfragst und den Status von den umliegenden Objekten kriegen, also die Objekte, die bei der X-Koordinate +/- 1 und die, die bei der Y-Koordinate +/- 1 haben. Mir ist soweit keine Funktion bekannt mit der das möglich ist. Das heißt wohl du musst alles seperat abfragen und vergleichen, was bei vielen Feldern schnell ein großer Aufwand wird.
    Aber vielleicht weiß ja einer der anderen hier eine Lösung für dein Problem. Ich werde in den nächsten Tagen mal versuchen so etwas zu skripten und gucken ob ich das ganze irgendwie doch gut hinkriege. Wenn ja meld ich mich.

    Und noch eine Frage...was ist denn wenn man die Objekte unglücklich schiebt und dann z.B. 1 oder 2 Objekte alleine im Raum stehen ?

    Beispiel:

    o x o - y
    x x y - -
    x y o - -
    o x y o -

    Die "-" sind dabei Objekte die bereits weg sind. Nun kommt man an das y oben rechts nicht mehr dran. Was macht man dann ?

  3. #3
    Achso ja das ist nicht schlimm. Es geht eher darum sich einen Weg zu bahnen. Umso mehr Reihen man schafft umso besser. Ich denke um es wie bei Mahjong definitiv endlich zu machen müsste man sich schon sehr genau an die Positionierung halten.

    edit: Habe jetzt nach meiner Metode mal 40 Events gesetzt. Werde nach einem Test mal eine Skriptdemo uploaden. Dann kanns jeder mal anschauen und selber testen. Wems gefällt der kanns gerne übernehmen wobei das Skript ja einleuchtend ist und man sich sowieso ein eigenes bauen muss will man nicht exakt meine Map verwenden.

    Geändert von Phryx (30.11.2012 um 00:33 Uhr)

  4. #4
    Also hier mal die Version die ich heute Abend fertig gemacht habe

    http://www.dateiupload.com/files/ltoVcsoPPG.rar

    Ist ein rm2k3 projekt


    Kuz zur Erläuterung:

    Wenn man auf den Totenschädel klickt werden die Objekte zufällig verteilt. Sollte das Rätsel "unlösbar" sein einfach nochmal drauf drücken. Gerade im engen Gang links kann es zu Sackgassen kommen, da werde ich in der Spielversion die Tiles fest setzen. Ich habe jetzt mit einzelnen Call Events gearbeitet. Man kann das ganze natürlich auch mit einem Call Event machen, was einem Arbeit erspart da man mehrfach vorkommende Kombinationen nicht erneut codieren muss. Aber ich finde es mit einzelnen Events fürs debuggen einfacher und ausserdem löscht er dann nicht durch Zufall entstandene 3er Kombis aus weil man immer nur die beiden in Frage kommenden Events abfragt. Kann durchaus sein dass es nicht ganz Bugfrei ist. Da ich bei ca. 30 mal testen nicht alle Möglichkeiten testen konnte. Wer einen Bug findet kanns ja sagen.

    Ich empfehle bei den Call Events und den Map Events Dummy Events zu erstellen die soweit richtig sind dass man nur noch Variablen austauschen und kopieren muss.

    Geändert von Phryx (30.11.2012 um 04:08 Uhr)

  5. #5
    Hey ich habe das ganze mal kurz angetestet und bemerkt dass sich da noch einige Bugs drin befinden.

    Manchmal "tauschen" die Objekte nicht sonder beide erhalten eine der beiden Möglichkeiten. Als Beispiel...der Spieler ist S, die Objekte x,y und z.

    S x y -> S y y
    z y z y

    Oder aber die Objekte erhalten einen komplett anderen Status.

    S x y -> S z x
    y x y x

    Desweiteren ist das ganze ZIEMLICH oft nicht lösbar oder ich hatte einfach nur Pech^^

    Und als ich es einmal hätte schaffen können, da sind 3 Fässer nebeneinander nicht verschwunden.

  6. #6
    ja schade dass du nicht genau sagst welche nicht gehen. aber ich werds schon rausfinden.

  7. #7
    Ups. Ja das sollte ich eventuell machen.

    Das waren die rot eingerahmten hier.

  8. #8
    So ich hab das Spiel jetzt fertig mit insgesamt 66 Events. War wirklich eine stupide Arbeit. Mit Screenshots und mehreren Testläufen hab ich jetzt eine Kombination gefunden wo man nicht zu leicht und nicht zu schwer durchkommt und hab jedem ein Event zugeordnet. Es war einfach in zu vielen Fällen unmöglich das Rätsel zu lösen.

    Wenn dus nochmal testen magst Quetschi lad ichs nochmal hoch ansonsten...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •