Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

kilka procesów jednocześnie cpp

Ostatnio zmodyfikowano 2018-10-07 13:31
Autor Wiadomość
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 :(
P-172549
pekfos
» 2018-10-06 23:12:25
1. Chodzi o wątki, nie o procesy.
2. Do opisanego problemu nie potrzebujesz wątków.
P-172550
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ć...
P-172551
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
C/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;
       
       
    }
}
P-172552
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:
C/C++
auto czas_pomiaru = clock();
zmienna +=( czas_pomiaru - czas_zmiennej ) / interwal;
czas_zmiennej = czas_pomiaru -( czas_pomiaru - czas_zmiennej ) % interwal;
P-172553
« 1 »
  Strona 1 z 1