2016-08-21 4 views
-3

Ich mache einfaches Spiel und versuchen, Char-Spawn nach 5 Sekunden vom Beginn des Spiels. Dies ist Teil meines Codes und ich bin mir nicht sicher, ob ich time.h oder loop-Funktion oder etwas verwenden muss. Kann mir jemand einen Rat geben? DankeLaichen nach der Zeit in C

char * image = 
/**/ "H H" 
/**/ "H H" 
/**/ "HHHHH" 
/**/ "H H" 
/**/ "H H"; 

#define HERO_WIDTH (5) 
#define HERO_HEIGHT (5) 

void setup_hero(void) { 
    // Set up the hero at the centre of the screen. 
    int hero_x = (screen_width() - HERO_WIDTH)/2; 
    int hero_y = (screen_height() - HERO_HEIGHT)/2; 
    hero = sprite_create(hero_x, hero_y, HERO_WIDTH, HERO_HEIGHT, image); 

    wait(5); // not working 
    sprite_draw(image); 
    show_screen(); 
} 
+0

Die syscall für x Sekunden Pause ist in der Regel 'sleep', nicht' wait' genannt wird. – PSkocik

+0

Wird die Sleep-Funktion funktionieren, während das Spiel noch läuft, während währenddessen der Char gespielt wird? – lufee

+1

Sie sollten Warnungen von Ihrem Compiler erhalten. Entweder ist das "Warten" nicht deklariert oder es dauert kein "Int". Wenn Sie sie nicht erhalten, optimieren Sie Ihr Build-System. – PSkocik

Antwort

1

Normalerweise sind Spiele ereignisorientiert. Sie haben eine Hauptschleife, die praktisch nur die Benutzereingaben abfragt, einen Timer aktualisiert und alle Entitäten in der Szene aktualisiert/rendert.

Der von der Hauptschleife aktualisierte Zeitgeber verfolgt die Anzahl der Millisekunden, die seit der letzten Iteration der Schleife verstrichen sind, und wird oft als "Delta" -Zeit bezeichnet. Delta-Zeit ist sehr nützlich für die Skalierung der Geschwindigkeit von Animation und Sound, da die Zeit, die für die Hauptschleife benötigt wird, abhängig von einer großen Anzahl von Faktoren ist.

Ein Weg, um das zu erreichen, was Sie versuchen zu tun, geben Sie Ihrer Entität einen Zähler, der auf 0 gesetzt wird, wenn es zum ersten Mal erzeugt wird. Jedes Mal, wenn die Entität aktualisiert wird, fügen Sie dem Zähler die Deltazeit hinzu. Wenn der Zähler größer als oder gleich 5000ms ist, sind 5 Sekunden vergangen.

Die beste Möglichkeit zur Implementierung der Delta-Zeit in C ist die Verwendung der clock-Funktion in <time.h>. Es gibt die Anzahl der CPU-Zyklen zurück, die seit dem Start des Programms vergangen sind. Wenn Sie diesen Wert durch CLOCKS_PER_SEC/1000 teilen, erhalten Sie die Anzahl der verstrichenen Millisekunden. subtrahiere die Zeit für die letzte Iteration von der aktuellen Zeit, um die Deltazeit zu erhalten.

sehen: http://www.tutorialspoint.com/c_standard_library/c_function_clock.htm

Verwandte Themen