Spieldauer, nach 2 Minuten Spiel beenden?

  • GM 8

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

  • Spieldauer, nach 2 Minuten Spiel beenden?

    Hallo,

    ich darf morgen kurzfristig den Game Maker 8 vorstellen. Dazu habe ich einiges an Material zusammen und kann auch einige Beispielspiele vorstellen.
    Was mir noch fehlt, hab ich noch nirgends gefunden, ist die Möglichbkeit, ein Spiel nach einer bestimmten Zeit zu beenden. Folgende Reihenfgolge:

    1) Zwei Minuten erreicht
    2) Higscoreliste anzeigen
    3) Spiel beenden

    Könnt Ihr mir einen Tipp geben, wo genau ich das nachlesen kann oder alternativ kurz beschreiben, wie ich das mache?

    Vielen Dank im voraus und viele Grüße
    Yeti
  • Du erstellst irgendein ein Objekt, gibst ihm kein sprite(oder stellst visible auf false--> machst also den Haken[übrigens an alle die Hacken schreiben, wenn ihr Haken meint gehört da kein ck hin!!!] weg) und machst dann in ein create-event :event_create: den Teil von larsi.

    GML-Quellcode

    1. {alarm[0]=120*room_speed}
    Dann nimmst du ein Alarmevent :event_timer: und sagst dort, dass die Highscoretabelle angezeigt werden soll und dann das Spiel beendet werden soll.
    GML lernen geht leicht :)
    1. http://www.gm-d.de/help/ (deutsch)
    2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
    3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sk.Info.k.P. ()

  • In der Hilfe kannst du die einzelnen Sachen zum Highscore finden
    Spoiler anzeigen
    highscore_show(numb) Zeigt die Highscore-Tabelle. numb ist der neue Punktestand. Wenn der Punktestand hoch genug ist, um in die Tabelle aufgenommen zu werden, kann der Spieler einen Namen eingeben. Verwende -1, um die aktuelle Tabelle nur anzuzeigen.Wenn du sie also wirklich nur zeigen willst.
    highscore_set_background(back) Setzt das zu verwendende Hintergrundbild. back muss der Index einer der Hintergrundressourcen sein.
    highscore_set_border(show) Gibt an, ob die Highscore-Tabelle einen Rahmen haben soll oder nicht.
    highscore_set_font(name,size,style) Setzt die Schriftart, die in der Tabelle für den Text verwendet wird. (Dies ist eine gewöhnliche Windows-Schriftart, nicht eine aus den Schriftart-Ressourcen.) Du bestimmst den Namen, Größe und Art (0=normal, 1=fett, 2=kursiv, 3=fett-kursiv).
    highscore_set_colors(back,new,other) Setzt die Farbe, die für den Hintergrund (back) der Tabelle verwendet wird , bei Neueinträgen (new) und bei den übrigen (other) Einträgen.
    highscore_set_strings(caption,nobody,escape) Ändert die verschiedenen vorgegebenen Zeichenketten, die verwendet werden, wenn die Highscore-Tabelle angezeigt wird. caption ist der Titel des Fensters. nobody ist die Zeichenkette, die verwendet wird, wenn keiner diesen Rang in der Tabelle besetzt. escape ist die Zeichenkette an der Unterkante, welche angibt, die Esc-Taste zu drücken. Du kannst diese verwenden, wenn dein Spiel eine andere Sprache verwenden soll.
    highscore_show_ext(numb,back,border,col1,col2,name,size) Zeigt die Highgscore-Tabelle mit einer Anzahl von Optionen (dies kann auch erreicht werden, indem man eine Anzahl der vorstehenden Funktionen verwendet). numb ist der neue Punktestand. Falls der Punktestand hoch genug ist, um in die Tabelle aufgenommen zu werden, kann der Spieler einen Namen eingeben. Verwende -1, um die aktuelle Tabelle einfach nur anzuzeigen. back ist das zu verwendende Hintergrundbild, border gibt an, ob ein Rahmen gezeichnet werden soll oder nicht. col1 ist die Farbe des neuen Eintrags, col2 bestimmt die Farbe der übrigen Einträge. name ist der Name der zu verwendenden Schriftart und size ist die Schriftgröße.
    highscore_clear() Löscht die Einträge der Highscore-Tabelle.
    highscore_add(str,numb) Fügt einen Spieler mit dem Namen str und dem Punktestand numb zu der Tabelle hinzu.
    highscore_add_current() Fügt den aktuellen Punktestand zu der Tabelle. Der Spieler wird nach einem Namen gefragt.
    highscore_value(place) Gibt den Punktestand der Person auf dem angegebenen Tabellenplatz wieder (1-10). Dies kann verwendet werden, um deine eigene Highscoretabelle zu zeichnen.
    highscore_name(place) Gibt den Namen der Person auf dem angegebenen Tabellenplatz wieder (1-10).
    draw_highscore(x1,y1,x2,y2) Zeichnet die Highscore-Tabelle in den "room" innerhalb des angegebenen Rechteckes unter Verwendung der aktuellen Schriftart.
    GML lernen geht leicht :)
    1. http://www.gm-d.de/help/ (deutsch)
    2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
    3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sk.Info.k.P. ()

  • current_time lässt sich dafür auch benutzen:
    :event_create: Create Event

    GML-Quellcode

    1. endTime = current_time + (1000 * 60 * 2);


    :event_step: Step Event

    GML-Quellcode

    1. if (current_time >= endTime) {
    2. // Spiel beenden
    3. }


    Das ganze läuft dann unabhängig von der FPS, weil das ganz nicht in Steps gerechnet wird und auch das Alarm-Event fällt weg.

    @Sinsokra: Ein hardgecodeteter Wert von 30 ist nicht gut, weil der Room Speed z.B. auch auf 60 oder 120 oder sonstiges gesetzt sein kann.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Sk.Info.k.P. schrieb:

    Du erstellst irgendein ein Objekt, gibst ihm kein sprite(oder stellst visible auf false--> machst also den Haken[übrigens an alle die Hacken schreiben, wenn ihr Haken meint gehört da kein ck hin!!!] weg) und machst dann in ein create-event :event_create: den Teil von larsi.

    GML-Quellcode

    1. {alarm[0]=120*room_speed}
    Dann nimmst du ein Alarmevent :event_timer: und sagst dort, dass die Highscoretabelle angezeigt werden soll und dann das Spiel beendet werden soll.



    Hi,

    hab ich gerade eben probiert. Das funktioniert leider nicht. Ich bekomme zwar keine Fehlermeldung aber es passiert schlicht nichts.
    Dazu mal eine Frage.

    Ich habe dann statt 120 auch mal 5 genommen, in der Hoffnung, es geht dann schneller. Hat sich auch nichts getan. Sind das dann Sekunden? Also wenn ich 30 pfs eingestellt hab, müsste dann bei 180 Sekunden die Higscoretabelle angezeigt werden?

    Gruß Yeti
  • Wie lange hast du denn etwa gewartet? Du wolltest ja 2 Minuten. Ansonsten scheint mir die Lösung von henrik sowieso besser. Ich habe noch ne ziemlich dumme Idee, aber hast du dein Objekt auch in den Raum gesetzt? Denn wenn es ja nicht da ist, kann ja auch nichts passieren...
    GML lernen geht leicht :)
    1. http://www.gm-d.de/help/ (deutsch)
    2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
    3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)
  • Sk.Info.k.P. schrieb:

    ...Ich habe noch ne ziemlich dumme Idee, aber hast du dein Objekt auch in den Raum gesetzt? Denn wenn es ja nicht da ist, kann ja auch nichts passieren...


    Haja... doofer Anfängerfehler :)
    Es hat jetzt geklappt.

    Ich probier jetzt noch die andere Lösung aus. Aber noch eine Frage zu der Berechnung... die fps sind bei mir auf 30 eingestellt. 120 * 30 sind 3600. Wie komme ich da auf 2 Minuten?

    Im zweiten Beispiel steht dann folgendes:

    GML-Quellcode

    1. endTime = current_time + (1000 * 60 * 2);

    Wie komm ich hier auf zwei Minuten?

    Gruß Yeti
  • die fps sind bei mir auf 30 eingestellt. 120 * 30 sind 3600. Wie komme ich da auf 2 Minuten?

    FPS = Frames per Second, heißt es wird 30 mal in der Sekunde Step und Draw aufgerufen, d.h. 30 Steps sind 1 Sekunde. 120 Sekunden * 30 Steps = 3600 Steps.

    Wie komm ich hier auf zwei Minuten?

    current_time ist die derzeitige Laufzeit des Systems in Millisekunden. 1000 Millisekunden sind 1 Sekunde, 60 Sekunden sind 1 Minute -> 1000 * 60 * 2 -> 2 Minuten.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

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