Countdown mit 0

  • GM 7
  • Countdown mit 0

    Also ich habe folgendes Problem:
    Ich habe einen countdown im spiel welcher von 2 min runterzählt.
    Das problem dabei ist, dass sobald der zähler unter 10 geht werden die zahlen 1-9 ohne davor geschriebene 0 ausgegeben, was einfach nicht gut aussieht.
    Wie kann man das machen?
  • Um die Zeichkette zu zeichnen, musst du sie ja nun in einen String konvertieren:

    GML-Quellcode

    1. str = string(countdown);

    Nun bestimmst du die Länge der Zeichenkette, um zu schauen, ob sie zu kurz ist:

    GML-Quellcode

    1. len = string_length(str);

    Nun gibt es die nette Funktion string_repeat, die eine Zeichenkette mit einer bestimmten Anzahl an Kopien einer anderen Zeichenkette enthält. Diese kannst du nutzen, ob die führenden Nullen zu erzeugen. Das Ergebnis dieser Funktion muss dann nurnoch mit der eigentlichen Zeichenkette konkateniert werden:

    GML-Quellcode

    1. str = string_repeat("0", 3 - len) + str;


    Hinweiß: Ich habe nicht getestet, ob die Funktion string_repeat mit 0 als Eingabe funktioniert, ich bin einfach mal davon ausgegangen dass dies der Fall ist. Die willkührliche 3 muss der maximalen Anzahl der Stellen des Timers entsprechen! Ich habe ebenfalls nicht getestet, wie sich string_repeat verhält, wenn man eine negative Zahl übergibt.
  • also mein countdown funktioniert folgendermaßen:

    Create Event:
    minuten=2
    sekunden=00
    alarm[0]=30

    Alarm0 Event:
    sekunden-=1
    if sekunden<0
    {
    sekunden=59
    minuten-=1
    }
    alarm[0]=30

    Draw Event:
    draw_text(view_xview+600,view_yview+28,string(minuten)+string(" : ")+string(sekunden))

    kannst du mir sagen wie ich das mit deiner idee kombinieren kann?
  • Hier ne Lösung, es geht glaub ich auch mit der obigen Idee, hab die funktion string_repeat abe rnoch nie angewandt xD

    im draw event:

    len = string_length(sekunden)
    if len = 2
    draw_text(view_xview+600,view_yview+28,string(minuten)+string(" : ")+string(sekunden))
    else
    draw_text(view_xview+600,view_yview+28,string(minuten)+string(" : ")+string(0)+string(sekunden))

    Bin mir nicht sicher wie es aussieht aber ich glaube es sollte gehen :/

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Es geth eigentlich noch einfacher:


    if sekunden >= 10
    draw_text(view_xview+600,view_yview+28,string(minuten)+string(" : ")+string(sekunden))
    else
    draw_text(view_xview+600,view_yview+28,string(minuten)+string(" : ")+string(0)+string(sekunden))

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

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