Prosta gra w konsoli
Ostatnio zmodyfikowano 2014-02-02 14:58
najkosz Temat założony przez niniejszego użytkownika |
Prosta gra w konsoli » 2014-02-02 14:15:09 Napisałem dzisiaj prostą grę Star Wars. Wszystko działa fajnie, mam się już zabrać za pisanie części wygranej, ale gdy kompiluję, uruchomię, odczekam ponad 5 sekund i wprowadzę złą liczbę, to wyświetla tylko to, że liczba jest zła, a nie że zła i wprowadzona za późno. Kod: #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main() { time_t s, k; srand( time( NULL ) ); int d, x; int roznica = 0; int wygrana = 0, przegrana = 0; int mhp = 100; while( wygrana < 3 ) { d = 1 + rand() %( 9 ); cout << "Wcisnij " << d << " !" << endl; cout << endl; cout << " |o| " << endl; time( & s ); cin >> x; if( x == d ) { time( & k ); roznica = difftime( k, s ); if( roznica <= 5 ) { wygrana++; } if( roznica > 5 ) { cout << "Za wolno!" << endl; if( 3 - przegrana == 3 || 3 - przegrana == 2 ) cout << "Pozostały Tobie " << 3 - przegrana << " szanse!" << endl; if( 3 - przegrana == 1 ) cout << "Pozostala Tobie 1 szansa!" << endl; if( 3 - przegrana == 0 ) cout << "Nie masz szans!" << endl; przegrana++; } } if( x != d && roznica > 5 ) { cout << "Zle i za wolno!" << endl; if( 3 - przegrana == 3 || 3 - przegrana == 2 ) cout << "Pozostały Tobie " << 3 - przegrana << " szanse!" << endl; if( 3 - przegrana == 1 ) cout << "Pozostala Tobie 1 szansa!" << endl; if( 3 - przegrana == 0 ) cout << "Nie masz szans!" << endl; przegrana++; } if( x != d ) { cout << "Zle!" << endl; if( 3 - przegrana == 3 || 3 - przegrana == 2 ) cout << "Pozostały Tobie " << 3 - przegrana << " szanse!" << endl; if( 3 - przegrana == 1 ) cout << "Pozostala Tobie 1 szansa!" << endl; if( 3 - przegrana == 0 ) cout << "Nie masz szans!" << endl; przegrana++; } if( przegrana > 3 ) { cout << endl; cout << "*dam dam dam dam damdam dam damdam*" << endl; cout << endl; cout << " <o>" << endl; cout << " ^" << endl; cout << " <<< ^ >>>" << endl; cout << " <<< >>>" << endl; cout << "<< (1) (2) (3) >>" << endl; cout << " <<< >>>" << endl; cout << " <<<< >>>>" << endl; cout << " v" << endl; cout << endl; cout << " ***" << endl; cout << " *>o<*" << endl; cout << " ***" << endl; cout << endl; cout << "Imperium wygralo" << endl; return 0; } } return 0; } |
|
alixir |
» 2014-02-02 14:23:39 Dlatego, że zmienna roznica obliczana jest tylko gdy podasz poprawną liczbę. Jeśli podasz błędną to roznica = 0 zgodnie z tym co jest napisane na początku programu. |
|
najkosz Temat założony przez niniejszego użytkownika |
Podziękowanie. » 2014-02-02 14:25:05 Dziękuję bardzo. Tylko jak to zmienić? Dodać obliczanie różnicy w każdym warunku? |
|
alixir |
» 2014-02-02 14:28:44 Przesuń time( & k ); roznica = difftime( k, s ); przed pierwszego 'if' |
|
najkosz Temat założony przez niniejszego użytkownika |
» 2014-02-02 14:30:24 Dzięki, tylko że teraz najpierw wyświetla "Źle i za wolno", potem liczbe szans, a potem jeszcze "Źle" i zmniejszoną liczbę szans. Co zrobić? |
|
alixir |
» 2014-02-02 14:36:28 Heh wieidziałem, że to napiszesz :) Zmień trzeci warunek na if( x != d && roznica <= 5 ) |
|
najkosz Temat założony przez niniejszego użytkownika |
» 2014-02-02 14:44:22 A ja poradziłem sobie inaczej: #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main() { time_t s, k; srand( time( NULL ) ); int d, x; int roznica = 0; int wygrana = 0, przegrana = 0; int mhp = 100; while( wygrana < 3 ) { d = 1 + rand() %( 9 ); cout << "Wcisnij " << d << " !" << endl; cout << endl; cout << " |o| " << endl; time( & s ); cin >> x; time( & k ); roznica = difftime( k, s ); if( x == d ) { if( roznica <= 5 ) { wygrana++; } if( roznica > 5 ) { cout << "Za wolno!" << endl; if( 3 - przegrana == 3 || 3 - przegrana == 2 ) cout << "Pozostały Tobie " << 3 - przegrana << " szanse!" << endl; if( 3 - przegrana == 1 ) cout << "Pozostala Tobie 1 szansa!" << endl; if( 3 - przegrana == 0 ) cout << "Nie masz szans!" << endl; przegrana++; } } if( x != d ) { if( roznica > 5 ) { cout << "Zle i za wolno!" << endl; } if( roznica <= 5 ) cout << "Zle!" << endl; if( 3 - przegrana == 3 || 3 - przegrana == 2 ) cout << "Pozostały Tobie " << 3 - przegrana << " szanse!" << endl; if( 3 - przegrana == 1 ) cout << "Pozostala Tobie 1 szansa!" << endl; if( 3 - przegrana == 0 ) cout << "Nie masz szans!" << endl; przegrana++; } if( przegrana > 3 ) { cout << endl; cout << "*dam dam dam dam damdam dam damdam*" << endl; cout << endl; cout << " <o>" << endl; cout << " ^" << endl; cout << " <<< ^ >>>" << endl; cout << " <<< >>>" << endl; cout << "<< (1) (2) (3) >>" << endl; cout << " <<< >>>" << endl; cout << " <<<< >>>>" << endl; cout << " v" << endl; cout << endl; cout << " ***" << endl; cout << " *>o<*" << endl; cout << " ***" << endl; cout << endl; cout << "Imperium wygralo" << endl; return 0; } } return 0; } |
|
alixir |
» 2014-02-02 14:58:44 No i super, że zastanawiasz się nad problemem zamiast, ślepo przepisywać podawany kod. |
|
« 1 » |