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

Prosta gra w konsoli

Ostatnio zmodyfikowano 2014-02-02 14:58
Autor Wiadomość
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:
C/C++
#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;
}
P-103858
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.
P-103859
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?
P-103860
alixir
» 2014-02-02 14:28:44
Przesuń

C/C++
time( & k );
roznica = difftime( k, s );

przed pierwszego 'if'
P-103862
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ć?
P-103863
alixir
» 2014-02-02 14:36:28
Heh wieidziałem, że to napiszesz :)

Zmień trzeci warunek na
if( x != d && roznica <= 5 )
P-103866
najkosz
Temat założony przez niniejszego użytkownika
» 2014-02-02 14:44:22
A ja poradziłem sobie inaczej:
C/C++
#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;
}
P-103867
alixir
» 2014-02-02 14:58:44
No i super, że zastanawiasz się nad problemem zamiast, ślepo przepisywać podawany kod.
P-103869
« 1 »
  Strona 1 z 1