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

1

04.06.2015, 23:02

Countdown (60s) Wie kann ich meinem Spiel diese Zeitgrenze hinzufügen - time in c++?

Hallo,

ich verwende C+++ und die SFML-Bibliothek um ein kleines Highscore-game zu programmieren. Ein Bild findet ihr im Anhang. Das Ganze funktioniert soweit ganz gut, allerdings habe ich es noch nicht geschafft einen Countdown zu stellen, also die zeit zu stoppen. Dabei soll der Zähler bei Betätigung des START-Knopfes (noch nicht da :D) den Timer starten und dann von 60 bis 0 herunterzählen. In dieser Zeiit kann der Nutzer zocken. Danach wird das Programm angehalten und der Highscore ausgegeben..
Kann mir jemand verständlich erklären, wie ich Funktionen für die Zeit in C++ verwende, sodass ich mein Problem bewältigen kann?
Ich würde mich über Antworten freuen.

darioprogrammiert
»darioprogrammiert« hat folgendes Bild angehängt:
  • Schlag den Smiley 1.PNG
SCHWEIGEN IST SILBER, REDEN IST GOLD :D

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

2

04.06.2015, 23:08

Eventuell solltest du dir einmal den <chrono> Header anschauen, der seit C++11 existiert.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

3

04.06.2015, 23:15

Oder sf::Clock

Vom Prinzip her:
- Startzeit speichern
- DeltaTime = Fortlaufende Zeit - Startzeit
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

ByteJunkie

Alter Hase

Beiträge: 891

Wohnort: Deutschland

Beruf: Softwareentwickler

  • Private Nachricht senden

4

05.06.2015, 08:34

mmsystem.h, timeGetTime() wäre auch eine Möglichkeit.
Mach was Du nicht lassen kannst und lass was Du nicht machen kannst. ;)

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

5

05.06.2015, 13:44

Das funktioniert aber nur auf Windows. In der Frage steht nicht einmal, dass er Windows verwendet.
<chrono> ist die beste Lösung weil dieser Header zum C++ Standard gehört.

ERROR

Alter Hase

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

6

05.06.2015, 14:05

Da er die SFML nutzt, ist wohl eher Koschis Vorschlag mit sf::Clock der Beste. Grade als Neuling ist es doch auch manchmal besser den einfacheren Weg zu nehmen und so kommt alles vom selben(der SFML) und das kann ja auch nie schaden.

7

05.06.2015, 15:27

Danke für die vielen Antworten. Ja ich verwende Windows!
SCHWEIGEN IST SILBER, REDEN IST GOLD :D

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

8

05.06.2015, 15:28

Nimm std::chrono, SFML empfiehlt selbst die std zu verwenden wenn möglich.

9

05.06.2015, 15:33

Kann mir einer erklären, wie ich das so verpacke, dass ich von 60 in 1s Abständen herunterzähle? Wichtig wäre auch, dass ich einen Zugriff auf die Zeit die verbleibt habe, um diese auch anzuzeigen! Ich würde mich über einen Codeausschnitt freuen, da ich noch nicht weis, wie ich mir das:


C-/C++-Quelltext

1
2
3
Clock(); 
Time getElapsedTime() const; 
 Time restart();



zum Nutzen machen kann.

Danke.
SCHWEIGEN IST SILBER, REDEN IST GOLD :D

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

10

05.06.2015, 15:43

Pseudocode:

C-/C++-Quelltext

1
2
3
4
5
6
7
end = getTime()+timeInSec(60);

while(true):
  now = getTime()
  remaining = (end-now).inSec()

  print remaining


[Edit] Nagut, direkt mit chrono: klick.
Das Programm läuft 60 Sekunden und gibt den Wert jeweils aus.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »DeKugelschieber« (05.06.2015, 15:56)


Werbeanzeige