Raster

  • GM 7

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hi, ich mach grad ein Bomberman Game, ich glaub das kennen die meisten auf jeden Fall der Spieler läuft nicht im Raster, die Bombe soll aber im Raster platziert werden und zwar in einem 32er.
    Ich habs schon damit probiert:

    GML-Quellcode

    1. x = random(x/32)*32;

    und normalerweise funktioniert das auch, nur dass mein Raster erst bei 48x48 anfängt und dann solls halt jede 32 Schritte ein Feld geben wo die Bombe platziert werden kann.

    Ich hab schon mit der Suche nach Grid und Raster gesucht, aber nichts passendes gefunden, auserdem hab ich in der Hilfe mir die grid-Funktionen angeschaut, hab aber keine Ahnung wie ich da ein Raster machen soll.

    Kann mir jemand jemand helfen, weil ohne das Raster kann ich das Spiel eig. vergessen.

    Danke,
    Gruß Gamer.
    Gruß Gamer
  • GML-Quellcode

    1. //get_xy
    2. var _xx,_tmp;
    3. xx=argument0;
    4. _tmp=string_copy(string(xx),string_length(string(xx)),1)
    5. _tmp=real(_tmp)
    6. if (_tmp>6)
    7. {
    8. while(_tmp==12)
    9. {
    10. xx+=1
    11. _tmp+=1
    12. }
    13. return xx;
    14. }
    15. if (_tmp<=5)
    16. {
    17. while(_tmp==0)
    18. {
    19. xx-=1
    20. _tmp-=1
    21. }
    22. return xx;
    23. }
    Alles anzeigen

    Ich hab es nicht getestet. Das hab ich nur grad aus meine Gedanken rausgefischt ^^
    MfG Henrik1235
    #edit
    Schreibfehler...
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von henrik1235 ()

  • Mach einfach:

    GML-Quellcode

    1. bombe_x=get_xy(x)
    2. bombe_y=get_xy(y)

    Ich versteh den Skript nich so richtig, kannst ihn bitte mal erklären.
    Das "runded" die zahl auf.

    MfG Henrik1235
    #edit:
    Arghh, mein Skript geht doch nicht :S
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%

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

  • Ein 23 Zeilen langes Script, das eine Zahl aufrundet? Dafür gibt es extra die spezielle Funktion
    ceil(x) Gibt x aufgerundet auf den nächsten Integer wieder.


    Ansonsten gibt es zwei sehr einfache Möglichkeiten, die einen beliebigen Punkt an ein Raster anpassen.
    Man kann zum Beispiel bei Objektkoordinaten folgende Funktion in Anspruch nehmen:
    move_snap(hsnap,vsnap) Richtet die Instanz am Raster aus.
    Oder aber auch folgenden Code:

    GML-Quellcode

    1. x = round(x/32)*32;

    Wenn du einen Rasterversatz von 48 Pixeln hast, so lautet das Script einfach:

    GML-Quellcode

    1. if (x <= 48)
    2. {x = round(x/32)*32 + 48;}
    3. else
    4. {x = round(x/32)*32;}
  • @LoganTheMaster:
    Les mal in meinem ersten Beitrag: das ist genau das gleiche was du gemacht hast, nur in einer Zeile.

    @Richlord:
    ne sorry, das funktioniert nicht, sowas in der Art hab ich auch schon gemacht, aber es ist nicht um 48 Pixel versetzt sondern es fängt bei 48 an, das ist etwas anderes, genau genommen fängt ist es um 16 Pixel versetzt, hab deinen Code mit 16 gemacht, funktioniert aber auch nicht.

    Hat keiner ne Ahnung wie das mit grids geht?

    Und wie funktioniert das mit move_snap???



    EDIT:
    Habs hinbekommen mit move_snap:

    Diesen Code hab ich im Create Event der Bombe:

    GML-Quellcode

    1. move_snap(32,32);
    2. if obj_player.x < x {x -= 16;}
    3. else {x += 16;}
    4. if obj_player.y < y {y -= 16;}
    5. else {y += 16;}
    Gruß Gamer

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

  • Gut, jetzt habe ich dich verstanden. Der abgeänderte Code lautet:

    GML-Quellcode

    1. if (x <= 16)
    2. {x = 16;} // Ohne Berechnung geht es in dieser Zeile viel einfacher, ist mir gerade aufgefallen
    3. else
    4. {x = round(x/32)*32+16;}


    EDIT: Was schon fertig? Habe mich wohl leicht verspätet...
  • The Gamer schrieb:

    @LoganTheMaster:
    Les mal in meinem ersten Beitrag: das ist genau das gleiche was du gemacht hast, nur in einer Zeile.

    The Gamer schrieb:

    x = random(x/32)*32;
    Mein Code:

    GML-Quellcode

    1. round(x/32)


    Also meiner Meinung nach gibt es einen Riesenunterschied zwischen random() [zufällig] und round() [runden]