zawieszenie wykonywania programu

0

mam taki problem ze potrzebuje zatrzymac wykonywanie programu na jakis czas zeby gra dzialala wolniej.
i teraz jest problem taki ze jak dam np sleep(1000); to lipa bo compilator sie oburza a przeciez powinno to zadzialac:
to jest prosciutka gierka wiec jest jeden glowny watek, wsumie moglbym zrobic petle while(i<10000)i++;

0

Jesli robisz to pod konsola windowsowa to mozesz sobie zrobic "minibiblioteke":

#ifndef _SLEEP_HPP_
#define _SLEEP_HPP_

#include <windows.h>	// dla WINBASEAPI void WINAPI Sleep(DWORD)

namespace dx {

// void delay(unsigned msec)
// powoduje wstrzymanie pracy programu na "msec" milisekund

void delay(unsigned msec) {
	
	::Sleep( (DWORD)msec );
	
return;	
}

// void sleep(unsigned sec)
// powoduje wstrzymanie pracy programu na "sec" sekund

void sleep(unsigned sec) {
	
	::Sleep( (DWORD)sec*1000 );
	
return;	
}

// -----------

} // koniec namespace dx

Bedziesz mial wtedy dwie funkcjedo sterowania czasem...

0
kamiseq napisał(a)

mam taki problem ze potrzebuje zatrzymac wykonywanie programu na jakis czas zeby gra dzialala wolniej.
i teraz jest problem taki ze jak dam np sleep(1000); to lipa bo compilator sie oburza a przeciez powinno to zadzialac:\

Pod czym piszesz? Jesli windows, to dołącz <windows.h> i Sleep(1000) - z wielkiej litery!
Jesli Linux, to <unistd.h> i sleep(1).

to jest prosciutka gierka wiec jest jeden glowny watek, wsumie moglbym zrobic petle while(i<10000)i++;

Nie. To nie o to chodzi, że jeden wątek, tylko że niepotrzebnie spowolniłbyś pracę innych aplikacji i dodatkowo zwiększył zużycie energii. Pomyśl o tych, co będą grać na laptopach (np. jadąc w pociągu).

0

Wlasciwie to blad, ze nastapil taki problem.
Powinienes tak skonstruowac petle glowna zeby byla wykonywana
jak najwieksza ilosc razy na sekunde, a kazda akcje w grze uzaleznic
od czasu poprzedniej akcji, a nie wykonywac 'jak leci' (nie dotyczy wyswietlania grafiki ;>).
W ten sposob ustawiajac jedna zmienna mozesz regulowac predkosc gry.

1 użytkowników online, w tym zalogowanych: 0, gości: 1