Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

1

31.07.2009, 16:00

[SDL] Funktion zum übergeben von "Zeit"

Hallo zusammen.
ich schreibe im mom an meinem ersten 2D Spiel, was der millionste Clon von einem Space Shooter sein soll :P
Ich möchte die Gegner alle 5 Sekunden erscheinen lassen und nun benötige ich eine Methode o.Ä die mir sozusagen 5 Sekunden übergibt und wenn 5 Sekunden um sind dann wird ein neuer Gegner erzeugt. Mit Sleep(); funktioniert dies ja nicht, da das Spiel ja weiterlaufen soll
Gibt es so eine Methode und wenn ja wie sieht diese aus etc.
(Spiel wird in C++ geschrieben als eine Win32-Konsolenanwendung)
Gruß im voraus

FLO2

Treue Seele

Beiträge: 221

Beruf: Schüler

  • Private Nachricht senden

2

31.07.2009, 16:16

timeGetTime ()
Sie gibt die verstrichene Zeit seit dem Start von Windows aus.
Müsstest allerdings öfters überprüfen ob die Dauer erreicht ist:

C-/C++-Quelltext

1
2
3
4
5
6
7
int Startzeit = timeGetTime ();
...
int Prüfzeit = timeGetTime ();

int Dauer = Startzeit - Prüfzeit;
if (Dauer >= 5000)     // Gib die Zeit in Millisekunden an

    ErstelleNeuenGegner ();


Man muss windows.h includen.
Pi mal Daumen = 18.84955592

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

3

31.07.2009, 16:23

Danke erstmal für deine Antwort.
Aber ist es nicht so, dass ich öfter Prüfzeit aktualisieren muss? also so:

C-/C++-Quelltext

1
2
3
4
5
6
7
int Startzeit = timeGetTime (); // Wird einmal ermittelt

...
int Prüfzeit = timeGetTime (); //muss immer neu ermittelt werden d.h. Wert wird immer weiter wachsen


int Dauer = Startzeit - Prüfzeit; // Dauer wird dadurch irgendwann negativ deswegen funzt die abfrage nur einmal

if (Dauer >= 5000)     // Gib die Zeit in Millisekunden an

    ErstelleNeuenGegner ();


Oder verstehe ich das ganze grade nur nicht richtig?^^
Gruß
EDIT: Ach nee ich muss Startzeit immer neu angucken oder?^^

4

31.07.2009, 16:35

Du hast es erfasst^^

nachdem die Zeit um ist ermittelst du, dann erneut eine Startzeit und wartest bis die Prüfzeit wieder 5 min sind.

Edit: jetzt ist die Nachricht wie sie sein soll^^
Rechtschreibefehler sind gewollt und sollen euer Unterbewusstsein beeinflussen ;-)

"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."

Erschaffen statt vernichten, dass ist die wahre Kunst

FLO2

Treue Seele

Beiträge: 221

Beruf: Schüler

  • Private Nachricht senden

5

31.07.2009, 16:38

Erstmal habe ich nen Fehler gemacht :doubt:
Es muss heißen

C-/C++-Quelltext

1
int Dauer = Prüfzeit - Startzeit;

Sonst würde die Dauer wirklich immer negativ sein.

Zitat von »"Lord-archimedes"«

EDIT: Ach nee ich muss Startzeit immer neu angucken oder?^^

Kommt drauf an was du unter neu angucken verstehst. :)
Wenn das Betriebsystem rauffährt und du den Wert von timeGetTime ausgibst wird er bei wengien Sekunden bzw. Minuten liegen, sagen wir bei 59000. Wenn du sie dann später aufrufst wird sie vlt. bei 65000 liegen. Und die Differenz ist genau die verstrichene Zeit.

EDIT: Da war wieder wer schneller^^
Pi mal Daumen = 18.84955592

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

6

31.07.2009, 16:42

Gut Frage hat sich ja dadurch geklärt. Vielen Dank euch beiden werde es heute Abend mal ausprobieren

7

31.07.2009, 16:45

Man(n) tut was man kann^^

@Flo2

Zitat

EDIT: Da war wieder wer schneller^^

ja^^
Rechtschreibefehler sind gewollt und sollen euer Unterbewusstsein beeinflussen ;-)

"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."

Erschaffen statt vernichten, dass ist die wahre Kunst

Werbeanzeige