Czas w grze

KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Na wstępie zaznaczam, że chodzi mi o kilka intów, które mają symulować upływ czasu po wykonaniu pewnych komend, a nie faktyczny czas. Napisałem na potrzebę zbadania zagadnienia krótki program... i nie działa.

Kopiuj
 
#include <iostream>

using namespace std;

string KIERUNEK;
int s, m, h, kierunek;

int main()
{
    cout << "Hejka" << endl;
    while (true)
    {
        if (m>60)
        {
        h=m/60;
        m=m-(h*60);
        }
        if (s>60)
        {
        m=s/60;
        s=s-(m*60);
        }
        cin >> KIERUNEK;
        if (KIERUNEK == "tup"||KIERUNEK == "t")
        kierunek = 1;
        else if (KIERUNEK == "hop"||KIERUNEK == "h")
        kierunek = 2;
        else if (KIERUNEK == "long"||KIERUNEK == "l")
        kierunek = 3;
        else if (KIERUNEK == "czas"||KIERUNEK == "c")
        kierunek = 4;
        else
        cout << "Nie bangla"<< endl;

        if (kierunek == 1)
            s=s+20;
        else if (kierunek == 2)
            s=s+40;
        else if (kierunek ==3)
            s=s+300000;
        else if (kierunek == 4)
            cout << h << ":" << m << ":" << s << endl;
    }
    return 0;
}

Gdzie jest błąd?

kaczus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Łódź
  • Postów: 1403
0

Może opiszesz jeszcze co ci się wydaje, że powinno to robić... Tu masz upływ robiony po każdej komendzie wpisanej w konsoli. czyli do chwili gdy nie wpiszesz czegoś w konsoli, czas nie plynie.

Craith
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 146
0
Kopiuj
string KIERUNEK;
int s, m, h, kierunek;

niezainicjowane zmienne?

Craith
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 146
0
Kopiuj
if (m>=60) {
	h += m / 60; // tu mozna nawet dac +1
	m = m - 60;
}
if (s>=60) {
	m += s / 60;//tu tez, bo bedziemy miec gwarancje ze jezeli przekrocza 60 to od razu odejmie sie 60 od nich
	s = s - 60;
}

polecam kartke i dlugopis

Craith
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 146
0

niestworzone bo ta liczba jest niestworza :D zapomnialem o tym

Kopiuj
if (s >= 60) {
	m += s / 60;
	s %= 60;
}
if (m>=60) {
	h += m / 60;
	m %= 60;
}
KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Przy aktualnych wartościach hop i tup już działają. Niestety we właściwym programie będą też występowały też wartości powyżej minuty lub poniżej, zależnie od pewnych parametrów. Już jest blisko rozwiązania, ale dalej nie osiągnąłem satysfakcjonującego rezultatu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.