Gleicher Code wird nicht korrekt ausgeführt??

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

  • Gleicher Code wird nicht korrekt ausgeführt??

    Ich stecke momentan in einer Zwickmühle und komme auf's verrecken hier nicht weiter - sieht irgendjemand den Fehler?

    In meinem Spiel werden bei 2 Dingen ein Highscore gespeichert: Einmal wenn man alle Leben verloren hat und zum anderen, wenn die Zeit abgelaufen ist.

    Jedoch legt er die Highscoredatei nur an, wenn die Zeit abläuft - nicht jedoch wenn ich alle Leben verloren habe. Obwohl der Code bei beiden absolut identisch ist (Copy/Paste)... einer geht, der andere nicht. Kann mir jemand erklären warum?

    Hier der ausführende Code:

    Code wenn Zeit vorbei:

    GML-Quellcode

    1. // Anzeige "Zeit vorbei"
    2. if global.time = 0
    3. {
    4. draw_set_color(c_black);
    5. draw_set_alpha(0.5);
    6. draw_rectangle(view_xview+300,view_yview+150,view_xview+840,view_yview+500,true);
    7. draw_rectangle(view_xview+300,view_yview+150,view_xview+840,view_yview+500,false);
    8. draw_set_alpha(1)
    9. global.game_over = true
    10. draw_set_color(make_color_rgb(170,170,0))
    11. draw_text(view_xview+520,view_yview+230,"Time Over")
    12. draw_text(view_xview+510,view_yview+260,"Your Score: " + string(global.score))
    13. instance_create(view_xview+550,view_yview+350,obj_replay_button);
    14. var check_highscore;
    15. var file;
    16. file = working_directory + '\swifty'+'.ini'
    17. if file_exists(file) // Prüft ob der Spielstand schon existiert
    18. {
    19. ini_open(file); // öffnet die ini Datei / den Spielstand
    20. check_highscore=ini_read_real("score","top",0); // ließt den Highscore aus
    21. ini_close(); // schließt die ini Datei / den Spielstand
    22. draw_text(view_xview+450,view_yview+400,"Highscore: " + string(check_highscore))
    23. }
    24. }
    Alles anzeigen


    Code wenn Leben verbraucht:

    GML-Quellcode

    1. // Anzeige "Game Over"
    2. if global.lives1 = 0
    3. {
    4. draw_set_color(c_black);
    5. draw_set_alpha(0.5);
    6. draw_rectangle(view_xview+300,view_yview+150,view_xview+840,view_yview+500,true);
    7. draw_rectangle(view_xview+300,view_yview+150,view_xview+840,view_yview+500,false);
    8. draw_set_alpha(1)
    9. global.game_over = true
    10. draw_set_color(make_color_rgb(170,170,0))
    11. draw_text(view_xview+520,view_yview+230,"Game Over")
    12. draw_text(view_xview+510,view_yview+260,"Your Score: " + string(global.score))
    13. instance_create(view_xview+550,view_yview+350,obj_replay_button);
    14. var check_highscore;
    15. var file;
    16. file = working_directory + '\swifty'+'.ini'
    17. if file_exists(file) // Prüft ob der Spielstand schon existiert
    18. {
    19. ini_open(file); // öffnet die ini Datei / den Spielstand
    20. check_highscore = ini_read_real("score","top",0); // ließt den Highscore aus
    21. ini_close(); // schließt die ini Datei / den Spielstand
    22. draw_text(view_xview+450,view_yview+400,"Highscore: " + string(check_highscore))
    23. }
    24. }
    Alles anzeigen


    Ich blicks einfach nicht :(
  • versuch mal <= zu benutzen. Beseitigt oft Fehler:

    GML-Quellcode

    1. ​if global.lives1 = 0

    in

    GML-Quellcode

    1. ​if global.lives1 <= 0
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Nein, funktioniert leider auch nicht :(

    Bei if global.time = 0 wurde es von mir ja auch nur mit "=" verwendet und es funzt dort ohne Probleme. Nichts dest trotz habe ich es getestet, leider mit selben Ergebnis - er führt den ganzen Code bis er den "Replay-Button" drawt, ganz normal aus - lediglich den Highscore Teil interessiert ihn nicht die Bohne - was aber beim "Time-Over" Teil ohne Probleme macht. Ich versteh die Welt nicht mehr :(
  • Ich könnte mir vorstellen das es vll was mit deinem global.game_over = true zu tun hat?

    Das sobald du das ausführst ein anderer Code iwo ausgeführt wird (ein game over room oder so)... das die global.live1 variable vll wieder verändert (zurückstellt), somit global.live1 nicht mehr 0 ist und deswegen deine Highscore auch nich gespeichert wird?
  • Hm kann eigentlich nicht sein, denn er führt ja den Code von "// Anzeige "Game Over"" aus - nur halt bis zur 13. Zeile aus dem obigen Ausschnitt. Alles davor (also Zeile 1-12) führt er aus. Man sieht ja, dass er ein Viereck drawt, die Score anzeigen soll, den Replay-Button drawt usw. All das macht er ja noch. Nur dann ab Zeile 13 kommt ja die Highscore Geschichte und die ignoriert er komplett, obwohl den 100% selben Abschnitt im "Time Over" wunderbar ausgeführt wird.

    Das ist das was ich nicht verstehe. Beide Beispiele oben haben sämtliche Anweisungen ja innerhalb einer IF-Schleife - wie kann er da also einen Teil abarbeiten und den Rest ignorieren, wenn in exakt derselben anderen IF-Schleife er das ganze wunderbar macht???

    Wie gesagt - bitte obige Beispiele nochmal genau anschauen. Sie sind 1:1 (Copy/Paste). Ich habe lediglich Zeile 11 draw_text(view_xview+520,view_yview+230,"Game Over") ersetzt mit einem anderen String.

    Ich bin mit meinem Latein gerade echt am Ende :(

    EDIT: // gefixed - der Code oben behandelte nicht alle Szenarien... schwer zu erklären jetzt aber ich hab es nach 3 Tagen endlich hinbekommen... puhhh.. das war ne Arbeit :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von mirko2002 ()