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

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

11

16.10.2005, 10:10

Patrick, Du bist doch sonst immer für ressourcenschonendes Programmieren.
Eine Schleife verbraucht 100% CPU-Leistung.
Sleep legt das Programm solange schlafen.

Anonymous

unregistriert

12

16.10.2005, 10:18

*hust* Konsole *hust* konzeptioniert auf singletask *keuch*

Das mit Sleep ist jedoch erst seit dem NT-Kernel 3 so, vorher war das auch nur eine Schleife und hat das komplette Programm blockiert, aber da Konsolenprogramme nicht für Multitask gedacht waren, denke ich das man hier auf Multitask verzichten kann/sollte

babelfish

Alter Hase

  • »babelfish« ist der Autor dieses Themas

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

13

16.10.2005, 11:55

das mit dem GetTickCount() kommt mir am logischsten vor, aber:

Quellcode

1
error C2065: 'GetTickCount' : nichtdeklarierter Bezeichner


ist mir ja auch klar, aber ich hab schon alles versucht um ihn zu Initialisieren.
geht aber nicht -.-

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

14

16.10.2005, 13:19

MSDN+lesen = Lösung

bassdscho

Alter Hase

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

15

16.10.2005, 16:20

durchaus
vielleicht hast du was vergessen zu linken?!
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Anonymous

unregistriert

16

16.10.2005, 16:23

bassdscho
Fehler C2065 ist kein Linkerfehler sondern ein Definitionsfehler ;)

bassdscho

Alter Hase

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

17

16.10.2005, 18:14

Sorry, ich hab gar nicht auf die Fehlernummer geckuckt :angel:
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

18

16.10.2005, 22:03

Das richtige Vorgehen ist Sleep zu benutzen und Windows.h zu includen. Wenn es portabel sein soll, muss man halt mit ifdef arbeiten, z.B. aus PLIB:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
inline void ulSleep ( int seconds )
{
  if ( seconds >= 0 )
  {
#ifdef UL_WIN32
    Sleep ( 1000 * seconds ) ;
#else
    sleep ( seconds ) ;
#endif
  }
}


PLIB unterstützt ca 5-10 Betriebssysteme, von denen zugegebenermassen die meisten Unixabwandlungen sind. Busywaiting hab ich mir vor 18 Jahren beim Übergang vom C64 auf den Amiga abgewöhnt. Man sollte selbst bei Fullscreen Spielen Sleep benutzen und Multitasking im Hinterkopf haben.
"Games are algorithmic entertainment."

Anonymous

unregistriert

19

16.10.2005, 22:34

Osram
1. Unsigned, so haste die if-Abfrage weg. (Zeitangaben können niemals negativ sein)

2. ich weiß nicht wieso soviele auf int abfahren, man ist ja gern an die Plattform gebunden, sowas schimpft sich dann "portabel"

3. if-abfrage ob 0 ist unsinnig, Sleep testet das Intern selber anhand der Deltazeit, falls deine PLIB was auf sich hält, müsste die das auc tun.

4. Bei Fullscreen Spielen Sleep benutzen ist so gefährlich wie sich in der Badewanne die Haare Föhnen. Deshalb macht das auch keiner.

5. Fullscreen und Multitasking für Zeiten - Gibts da nicht einen Logikkonflikt? Zum Laden ja, aber zum Blockieren? Was wenn ALT+TAB dazu kommt? Ich sag nur: evil

6. UL_WIN32 ist kein gängies define, _WIN32 schon.

7. Besser Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
inline void mysleep (unsigned long ms) 
{ 
#if defined(_WIN32)
    ::Sleep (ms); 
#else 
    ::sleep (ms); 
#endif 
}


edit: 8. Sekundenangaben für Zeit auf einem PC? Hmn, säh Lustig aus wenn man nur 1,4 Sekunden warten will. Millisekunden haben schon sein recht auf existenz und die MS Hoschis haben sich bei der benutzung davon auch was gedacht.

bassdscho

Alter Hase

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

20

16.10.2005, 22:50

Zitat von »"nix da"«

4. Bei Fullscreen Spielen Sleep benutzen ist so gefährlich wie sich in der Badewanne die Haare Föhnen. Deshalb macht das auch keiner.


Deswegen sind FI-Sicherungen Pflicht in Nassräumen, seit einer Weile.
Da bin ich in Elektronik mal kurz aufgewacht :-D
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Werbeanzeige