Objekte an der sich immer ändernden Raumkontur entlang laufen lassen

  • Objekte an der sich immer ändernden Raumkontur entlang laufen lassen

    Hi
    Ich habe da einen Raum der mit Mauern begrenzt ist die teilweise in den Raum hinein raken,dazu gibt es noch einige Objekte die an der Mauer platziert sind. Diese Objecte verändern aber wärend des Spieles ihre Possition oder werden zerstöhrt. Alle Objecte haben die selbe Grösse 32x32.Die Raumgröße ist ebenfalls durch 32 teilbar.
    Nun soll eine Art Polizeikolonne von 9 Mann die hintereinander laufen immer den äußeren Spielfeldrand in Uhrzeigerrichtung abgehen ohne durch Objecte zu laufen sondern diese umgehen.Es sollen auch keine diagonalen Bewegungen stattfinden .
    Ich hatte schon mal angefangen die aller ersten Möglichkeiten die das Erste Object der Patrolie laufen kann bis zu einer Kolission und dann die Richtung ändert bis zur nächsten Kolisionn läuft .Aber das währen ja unzählige Möglichkeiten die erst mal geschrieben werden müssten. Und ob das auch dann alles so Funktionieren würde ?

    Wenn einer mal ne Lösung dafür hätte were ich dankbar

    Tschüss erst mal
  • Ich habe mir die Datei mal runtergeladen und angeschaut.
    Leider hilft sie mir in diesem Fall nicht weiter,da ich vorher nicht weiss wo ein Obj wegfällt oder am Rand hinzu kommt.
    Es müsste eher mit Kollisionsabfragen passieren,damit die Streife sich immer am weitesten aussen an den anderen Objecten entlang bewegt,nicht durchdringt , freie Lücken erkennt und in diese geht,aber auch wieder zurück geht wenn es eine Sackgasse war und dies immer im Uhrzeigersinn ,also immer in Bewegungsrichtung gesehen rechts von den anderen Objecten entlang.

    Trozdem vielen Dank daß du mir helfen wolltest
  • Hi
    Danke erst mal für die Antwoten.

    Ich stelle mal ne gm6-Datei rein.
    Es wird ein Level aus dem C64-Spiel "Werner Flasch Bier" das ich gerade versuche mit dem GM nach zu bauen. Ich weis nicht ob das jemandvon euch kennt?
    Die Wachen sollen hintereinander nur auf freien Feldern laufen und immer rechts von Objecten entlang . Der Pfad der Wache hängt nun davon ab wie sich der Spieler bewegt und wie die Steine fallen,das Weiss man vorher nicht.
    Jetzt werdet ihr eher ne Vorstellung haben was mein Problem ist.
    Dateien
    • We_Fl_Bi.zip

      (17,91 kB, 132 mal heruntergeladen, zuletzt: )
  • Hi Blue Spirit,
    ich kenne das Spiel noch aus Amiga500-Zeiten 8) :D

    Du könntest dein Problem mit
    If a position is collision free
    und
    Move in a direction of a point
    mit D & D lösen.

    Viel Glück und ich freu mich drauf ;)
    hetotecs Winter-Homepage - klick hier:hetotec.de


    Hier auf landet ihr auf meiner Spiele-Vorstellungs-Seite ^^
    Noch keinen Stern geschenkt bekommen? Hol dir deinen eigenen Stern
    hier yoyogames.com/games/show/30678
    Am Weihnachtsbaum Lichter anzünden? Mit 9 Musik-Titeln zur Auswahl oder eigene Musik laden
    hier yoyogames.com/games/show/20074
  • So hatte ich auch angefangen das so zu proggen,aber ging nicht sehr weit.Ich muss da noch mehr ausprobieren.Irgendwann werde ich auch ne Lösung finden.
    Leider habe ich das Spiel im C64 Format nur noch in Erinnerung wie das da so ablief,habe auch nur drei Levelbilder im Internet davon gefunden(es sind aber eigendlich min 30 ) die ich nachbauen könnte.Wenn Du mehr davon hast kannst Du mir die mal rüberschicken.
    So einfach wie das Spiel ausschaut ist es nähmlich nicht zu schreiben.Selbst das die Steine fast wie in Natur fallen war gar nicht so einfach zu machen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Blue_Spirit ()

  • @Blue_Spririt:
    Bei uns gibts sogar ein Tutorial dazu:
    Wegfindung mit den „mp_grid“ - Funktionen
    www.glowingorb.de
    „Wenn es im Universum noch irgendwo intelligente Lebewesen gibt, dann kennen sie vielleicht Schach, höchstwahrscheinlich jedoch GO

    (Schachweltmeister Emanuel Lasker)
  • Glowing Orb

    Ich habe mir das Tutorial mal geschrieben und ausprobiert.
    Aber ihr habt das Problem nicht verstanden.
    Die Streife soll den Spieler nicht auf den kürzesten Weg verfolgen und irgendwann mal einholen,sondern sie soll einfach am äussersten Spielfeldrand (Mauer und andere Objekte )im Uhrzeigersinn endlanglaufen und sie ohne Umwege umgehen .Mal fällt da eine Object weg, mal kommt einnes hinzu.und wo das ist weiss man vorher nicht.


    Aber das Tutorial werde ist sehr gut für andere Sachen nutzen können.

    Ich danke euch
  • Sollen die Wachen durch den Sand laufen können?

    Und habe ich es richtig verstanden, dass die Wachen hintereinander laufen sollen?
    Ich hätte eine Lösungsmöglichkeit in der sich die Wachen frei bewegen.

    Du kannst dir ja mal die Datei im Anhang angucken und sagen ob das so gut ist.
    Dateien
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]
  • Hi gm-freak

    Die Wachen sollen nur auf freien Feldern laufen können,also auch nicht durch den Sand.Immer rechts von Objecten entlang(Uhrzeigerrichtung) und immer am äusseren begehbahren Rand des Raumes der sich immer ändert. Nicht diagonal sondern von Feld zu Feld.Und sie sollen hindereinanderlaufen.
    Das sind viele Ansprüche aber es soll so sein.
    Ich habe mir deine Datei runtergeladen konnte sie aber nicht öffnen weil es eine "rar" ist .Stelle doch die noch mal als "gm6" gezippt rein.

    vielen danke erst mal
    Blue
  • Okay, ich werde mich noch mal ransetzen.
    Mal sehen was draus wird. ;)

    EDIT:
    Ich habe mir soetwas in Art gedacht. D funktioniert aber irgendwie nicht richtig.

    Vielleicht kann da j mal ein besserer GML-Coder einen Bilck drauf werfen.

    GML-Quellcode

    1. if hspeed=-4 && place_free(x-4,y) && place_free(x,y-4)&& place_free(x,y+4)
    2. { hspeed = 0; vspeed=4}
    3. else if hspeed=-4 && !place_free(x-4,y) && place_free(x,y-4)
    4. { hspeed = 0; vspeed=-4}
    5. if vspeed=-4 && place_free(x,y-4) && place_free(x+4,y) && place_free(x-4,y)
    6. { hspeed=-4; vspeed = 0}
    7. else if vspeed=-4 && !place_free(x,y-4) && place_free(x+4,y)
    8. { hspeed=4; vspeed = 0}
    9. if hspeed=4 && place_free(x+4,y) && place_free(x,y+4) && place_free(x,y-4)
    10. { hspeed = 0; vspeed=-4}
    11. else if hspeed=4 && !place_free(x+4,y) && place_free(x,y+4)
    12. { hspeed = 0; vspeed=4}
    13. if vspeed=4 && place_free(x,y+4) && place_free(x-4,y) && place_free(x+4,y)
    14. { hspeed=+4; vspeed = 0}
    15. else if vspeed=4 && !place_free(x,y+4) && place_free(x-4,y)
    16. { hspeed=-4; vspeed = 0}
    Alles anzeigen
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von gm-freak ()

  • gm-freak

    Das auf diese Art zu machen hatte ich auch im Sinn. Es ist bei mir aber immer gescheitert. Hatte wohl als GML-Anfänger einige Fehler drinn.
    Aber Dein Prinzip passt schon.
    Ich habe deinen Code ins Creade Event des Polizisten geschrieben,und die Speed-Abfrage rausgenommen,da er ja noch keinen Speed hat und dann so wie du es erstellt hast in das Step-Event getan.Er läuft nun los aber auch über den Sand und noch einiges.
    Ich muss das mal in Ruhe durchgehen,da lässt sich was draus machen.Habe bloss jetzt nicht genügend Zeit dafür.

    Danke erst mal
  • Wenn du vor jede sich schließende geschweifte Klammer noch ein exit; oder break; setzt, dann funktioniert die Sache wunderbar. Problem war nämlich, dass in den Anweisungen, die vspeed und hspeed Werte geändert werden, das Script danach aber noch weiterläuft und die jetzt veränderten Werte wieder überprüft werden, was natürlich nicht gewollt ist. break oder exit brechen die ganze Sache nach der Veränderung einfach ab.
    Einige meiner Spiele:
  • Benutzer online 1

    1 Besucher