Snake - Problem, wenn Segmente dazukommen

  • GM 7
  • Snake - Problem, wenn Segmente dazukommen

    Hi, ich bin grad dabei ein Snakespiel zu programmieren, das klappt auch ganz gut, hier mal mein Code:

    Create Von obj_snake_head:

    GML-Quellcode

    1. i = 0;
    2. global.posx[i] = 0;
    3. global.posy[i] = 0;
    4. count = 8;
    5. instance_create(x,y,obj_snake);
    6. count += 8;
    7. instance_create(x,y,obj_snake);
    8. count += 8;
    9. instance_create(x,y,obj_snake);
    10. count += 8;
    11. instance_create(x,y,obj_snake);
    Alles anzeigen


    Step von obj_snake_head:

    GML-Quellcode

    1. global.posx[i]=x
    2. global.posy[i]=y
    3. i+=1
    4. speed = 4;
    5. if keyboard_check(vk_right) {direction -= 5;}
    6. if keyboard_check(vk_left) {direction += 5;}



    Und jetzt noch von den Segmenten:
    Create von obj_snake:

    GML-Quellcode

    1. i = 0;
    2. alarm[0] = obj_snake_head.count;
    3. walk = 0;


    Alarm 0 von obj_snake:

    GML-Quellcode

    1. walk = 1;


    Step von obj_snake:

    GML-Quellcode

    1. if walk == 1
    2. {
    3. x = global.posx[i];
    4. y = global.posy[i];
    5. i += 1;
    6. }



    Das klappt alles Prima, es bildet sich eine Schlange, nur jetzt hab ich noch Punkte eingebaut, also so Diamanten, wenn man einen einsammelt bekommt man Punkte und es wird ein neuer Diamant zufällig createt, das klappt auch.
    Nur soll zusätzlich noch ein Segment erstellt werden, wenn es erstellt wird, dann läuft es nach dem Alarm aber nur den Weg der Schlange ab, wird aber nicht am Ende erstellt.

    Ich hoffe ihr wisst was ich meine.
    Hoffentlich könnt ihr mir dabei helfen, mein Problem zu lösen.
    Gruß Gamer
  • Ich hab das so gemacht, dass die einzelnen Segmente sich überhaupt nicht bewegen. Stattdessen wird in Laufrichtung ein neues Element erstellt. Die einzelnen Elemente haben eine bestimmte Lebensdauer (alarm[0]), nach der sie zerstört werden. Wenn ein Stein/Diamant/Wasauchimmer aufgesammelt wird, wird die Lebensdauer verlängert (obj_element.alarm[0] += 15). Funktionierte wunderprächtig.
  • Hi, hab das mal versucht, aber habs nicht richtig hinbekommen, kannst du das bitte ein bisschen genauer erklären?
    Und gibt es bei deiner Methode als Kopf ein eigenes Objekt oder hast du nur ein Objekt für jedes einzelne Segment?


    edit: ich habs jetzt so gemacht und zwar, ne Time Variable, die immer bei einsammeln des Diamanten erhöht wird, jetzt wird allerdings der Snake immer erst an der Stelle wo der Diamant eingesammelt wurde verlängert, dabei soll er zu dem Zeitpunkt als er eingesammelt wurde verlängert werden.

    Bsp:
    Der Kopf sammelt den Diamanten ein und wenn das Schwanzende diese Koordinaten erreicht wo der Diamant war, wird der Snake verlängert.
    Es soll aber so passieren:
    Der Kopf sammelt den Diamanten ein und genau bei dem Zeitpunkt wird der Snake verlängert, habt ihr ne Ahnung wie ich das machen soll?
    Gruß Gamer

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