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

Problem z kompilacją - gra "Kości"

Ostatnio zmodyfikowano 2008-04-08 11:27
Autor Wiadomość
Ju1ian
Temat założony przez niniejszego użytkownika
Problem z kompilacją - gra "Kości"
» 2008-04-07 21:11:13
Ostatnio zachciało mi się napisać niby grę kości w konsoli. Niestety kompilator nie kompiluje tej aplikacji, a ja nie rozumiem moich błędów. Oto kod:
C/C++
#include <iostream>
#include <ctime>
#include <stdio.h>

using namespace std;


int random( int nMin, int nMax ) { return rand() % nMax + nMin; }
int random2( int nMinx, int nMaxx ) { return rand() % nMaxx + nMinx; }
int player() {
    srand( time( NULL ) );
    cout << "Wylosowales " << random( 1, 6 ) << endl;
}
int enemy() {
    srand( time( NULL ) );
    cout << "Przeciwnik wylosował " << random2( 1, 6 ) << endl;
}

int main() {
    char klawisz;
    do {
        cout << "Witaj! Jak chcesz to pograjmy w kości ;)" << endl;
        cout << "[R]zuc kostka" << endl;
        cin >> klawisz;
        cin.ignore();
    } while( !klawisz = "r" );
   
    if( klawisz = "r" ) {
        player();
        cout << "Teraz kliknij ENTER, aby pozwolic mi rzucic ;)" << endl;
        enemy();
        if( random() > random2() ) {
            cout << "Brawo udalo ci sie wygrac!" << endl;
            cout << "Kliknij ENTER, aby zakonczyc.";
        } else {
            cout << "Przegrales z kompem?? Hahahaha" << endl;
            cout << "Kliknij ENTER, aby zakonczyc.";
        }
    }
   
   
    getchar();
   
}
P-426
DejaVu
» 2008-04-07 21:15:59
To się kompiluje - porównaj gdzie miałeś błędy :)
C/C++
#include <iostream>
#include <ctime>
#include <stdio.h>

using namespace std;


int random( int nMin, int nMax ) { return rand() % nMax + nMin; }
int random2( int nMinx, int nMaxx ) { return rand() % nMaxx + nMinx; }
void player()
{
    srand( time( NULL ) );
    cout << "Wylosowales " << random( 1, 6 ) << endl;
}
void enemy() {
    srand( time( NULL ) );
    cout << "Przeciwnik wylosował " << random2( 1, 6 ) << endl;
}

int main() {
    char klawisz;
    do {
        cout << "Witaj! Jak chcesz to pograjmy w kości ;)" << endl;
        cout << "[R]zuc kostka" << endl;
        cin >> klawisz;
        cin.ignore();
    } while( klawisz != 'r' );
   
    if( klawisz == 'r' ) {
        player();
        cout << "Teraz kliknij ENTER, aby pozwolic mi rzucic ;)" << endl;
        enemy();
        if( random( 1, 6 ) > random2( 1, 6 ) ) {
            cout << "Brawo udalo ci sie wygrac!" << endl;
            cout << "Kliknij ENTER, aby zakonczyc.";
        } else {
            cout << "Przegrales z kompem?? Hahahaha" << endl;
            cout << "Kliknij ENTER, aby zakonczyc.";
        }
    }
   
   
    getchar();
   
}
P-427
Ju1ian
Temat założony przez niniejszego użytkownika
» 2008-04-07 21:19:53
Eee.. U mnie się to jeszcze nie kompiluje. Błąd taki wywala:
40 E:/Dev-Cpp/danke.cpp expected `}' at end of input
Dzięki Ci za pomoc, jestem baardzo początkujący ;)
EDIT:
Poszło... Zapomniałem 1 nawiasu xD
Ale teraz gdy odpalam to mi się wyłącza kiedy wpisuje "r" ;/
P-428
DejaVu
» 2008-04-07 21:23:25
Musiałeś nie skopiować ostatniego nawiasu zamykającego z kodu :)

/edit:
Jeśli ma się nie wyłączać na klawisz 'r', to zmień warunek w pętli while na (klawisz == 'r')
P-429
Ju1ian
Temat założony przez niniejszego użytkownika
» 2008-04-07 21:28:42
Ok, już do wszystkiego doszedłem ;) Już wszystko działa, ale... No właśnie zawsze musi być jakieś ale ;P ...program zawsze losuje tą samą liczbę dla mnie i przeciwnika...
P-430
DejaVu
» 2008-04-07 21:33:02
Wstaw poniższą linijkę tylko na początku programu (w funkcji main).
srand( time( NULL ) );
P-431
Ju1ian
Temat założony przez niniejszego użytkownika
» 2008-04-08 10:12:23
Ok, już teraz działa, ale chciałbym zrobić dodatkowo "remis". Niby takie banalne, ale mi tego nie uznaje ;/:
C/C++
#include <iostream>
#include <ctime>
#include <stdio.h>

using namespace std;


int random( int nMin, int nMax ) { return rand() % nMax + nMin; }
int random2( int nMinx, int nMaxx ) { return rand() % nMaxx + nMinx; }
void player()
{
    cout << "Wylosowales " << random( 1, 6 ) << endl;
}
void enemy() {
   
    cout << "Przeciwnik wylosował " << random2( 1, 6 ) << endl;
}

int main() {
    srand( time( NULL ) );
    char klawisz;
    cout << "Witaj! Jak chcesz to pograjmy w kosci ;)" << endl;
    do {
        cout << "[R]zuc kostka" << endl;
        cin >> klawisz;
        cin.ignore();
    } while( klawisz != 'R' );
   
    if( klawisz == 'R' ) {
        player();
        enemy();
        if( random( 1, 6 ) > random2( 1, 6 ) ) {
            cout << "Brawo udalo ci sie wygrac!" << endl;
        }
        else if( random( 1, 6 ) == random2( 1, 6 ) ) {
            cout << "Remis!!" << endl;
        }
        else {
            cout << "Przegrales z kompem?? Hahahaha" << endl;
           
        }
       
    }
   
    getchar();
   
}
Nie wiem o co chodzi...
P-432
DejaVu
» 2008-04-08 11:05:45
Każdorazowe wywołanie funkcji random(1,6) losuje liczbę.
C/C++
for( int i = 0; i < 10; i++ )
     cout << random( 1, 6 ) << endl;

Musisz więc najpierw zapisać sobie najpierw wartość losowaną do zmiennej, a później porównówywać - w przeciwnym wypadku za każdym razem dostaniesz inną liczbę.
P-435
« 1 » 2
  Strona 1 z 2 Następna strona