kilka procesów jednocześnie cpp
Ostatnio zmodyfikowano 2018-10-07 13:31
pallpall Temat założony przez niniejszego użytkownika |
kilka procesów jednocześnie cpp » 2018-10-06 22:14:02 Witam, mam problem. Chciałem wywołać program, który robił dwie rzeczy jednocześnie : pierwsza część programu miałaby się robić w tle cały czas i wyglądać coś typu sleep(300) drewno=drewno+1. a druga część to miałoby byćmenu kliknij 1,2,3,zeby... mam z tym problem i nie mogę znaleźć działającego rozwiązania w internecie :( |
|
pekfos |
» 2018-10-06 23:12:25 1. Chodzi o wątki, nie o procesy. 2. Do opisanego problemu nie potrzebujesz wątków. |
|
Rashmistrz |
» 2018-10-07 02:51:49 Nie potrzebujesz "jednoczesności", tylko jej iluzji. Tak to jest w GameDevie i większości innych aplikacji.
Utwórz punkt w czasie, sprawdzaj czy minął i przesuwaj go w czasie. Powinno działać... |
|
pallpall Temat założony przez niniejszego użytkownika |
» 2018-10-07 13:13:00 prosiłbym o pomoc, z takim przykładem, bo dalej nie mogę znaleźć a opisy wyżej nic mi nie pomogły :C #include <iostream> #include <Windows.h> using namespace std; int zloto, drewno, zelazo, diamenty, wybor; int main() { int a = 50, b = 10, c = 5, d = 1; cout << "Witam, powodzenia" << endl; zloto = 100; drewno = 1000; zelazo = 500; diamenty = 10; cout << "0 wyswietl staty" << endl; cout << "1 dodaj tartak" << endl; cout << "2 dodaj kopalnie" << endl; cout << "3 dodaj plukarke" << endl; cout << "4 wykop diament" << endl; cout << "5 cena"; while( 1 ) { Sleep( 300 ); drewno = drewno + a; zelazo = zelazo + b; zloto = zloto + c; diamenty = diamenty + d; cout << drewno << endl; cin >> a; } } |
|
pekfos |
» 2018-10-07 13:31:52 Po pierwsze, Sleep() się nie nadaje do takich zastosowań. Jeśli zmienna X ma się zwiększać o I co N sekund, to tak na prawdę nie musi się zwiększać co N sekund. Wystarczy by była większa o odpowiednią ilość kiedy sprawdzisz jej wartość. Żeby to osiągnąć, będziesz musiał mierzyć czas od ostatniego powiększenia zmiennej i przekładać to na jej wartość. Do mierzenia czasu możesz użyć np clock(). Kod do zaktualizowania wartości zmiennej może wyglądać mniej więcej tak: auto czas_pomiaru = clock(); zmienna +=( czas_pomiaru - czas_zmiennej ) / interwal; czas_zmiennej = czas_pomiaru -( czas_pomiaru - czas_zmiennej ) % interwal; |
|
« 1 » |