Wieder mal die For Schleife

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

  • Wieder mal die For Schleife

    hallo leute

    war jetzt länger nicht hier weil ich gearbeitet habe an meinen projekten mit blender.

    und ich würde gerne nochmal über die for schleife sprechen.

    also ich weiß wie sie funktioniert und wie der syntax ist.aber ich dachte die for schleife wird nur einmal so oft ausgeführt wie man angibt.

    wie kann man damit dann zb die steuerung programmieren für nen 2d platformer ?


    lg
  • Das Step Event im Gamemaker oder main in C/++ oder update in Javascript etc ist auch nur eine Art for schleife ohne Ende. Bzw das Ende ist dann wenn du game_end(); ausführst.

    Pro step wird die for schleife auch nur einmal so oft wie man angibt ausgeführt. Aber halt im nächsten step dann wieder usw...

    Du brauchst also keine for schleife für deine Steuerung einrichten, das macht das step event schon von selbst.
    Jeden step fragst du ab ob unter dem player eine kollisionsmöglichkeit besteht, falls nein wird gravity zu deiner y position hinzugefügt und der spieler fällt ein bisschen nach unten - falls ja wird das ignoriert und ggf die y position direkt auf kollisionshöhe gesetzt.
    Jeden step wird der input fürs springen abgefragt und falls der true zurück gibt und unter dem spieler eine kollisionsmöglichkeit besteht wird die sprungstärke zur y position hinzugefügt bis die gravitation so stark gegenwirkt, dass er wieder auf den Boden fällt.
    Sobald du collision_line(x,y,x,y+1, obj_boden, false, true) ein baust, checkt er jeden step ab ob da der boden ist.
    Du musst also nicht zwingend:

    GML-Quellcode

    1. if(collision_line(x,y,x,y+1, obj_boden, false, true) == true){
    2. //do something
    3. }
    4. if(weather_is_sunny() == true){
    5. //open windows
    6. }

    schreiben, sondern kannst auch vorher alle abfragen sammeln und dann erst auswerten

    GML-Quellcode

    1. var sunshine = getSunny();
    2. var grounded = collision_line(x,y,x,y+1,obj_boden,false,true);
    3. if(grounded == true){
    4. //do something
    5. }
    6. if(grounded == true && sunshine == tue{
    7. //open windows and do something
    8. }

    diese var variablen bleiben auch nur einen step vorhanden, so wie vars in einer forschleife

    GML-Quellcode

    1. var ippsitz = 0;
    2. var dingelstedt = 0;
    3. for(var i = 0 ; i < 10 ; i += 1){
    4. var ippsitz = i;
    5. dingelstedt += ippsitz; //ist nur das ippsitz aus der forschleife und nciht das ippsitz aus der step schleife
    6. }
    7. draw_text(x,y,sring(ippsitz)); // --> ippsitz ist immernoch 0
    8. draw_text(x,y+16,string(dingelstedt)); // --> dingelstedt ist 45


    ich hab keine Ahnung ob ich deine Frage beantworten konnte, aber mir war grad nach schreiben ;)

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)