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: #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(); }
|
|
DejaVu |
» 2008-04-07 21:15:59 To się kompiluje - porównaj gdzie miałeś błędy :) #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(); }
|
|
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" ;/ |
|
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') |
|
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... |
|
DejaVu |
» 2008-04-07 21:33:02 Wstaw poniższą linijkę tylko na początku programu (w funkcji main). srand( time( NULL ) ); |
|
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 ;/: #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... |
|
DejaVu |
» 2008-04-08 11:05:45 Każdorazowe wywołanie funkcji random(1,6) losuje liczbę. 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ę. |
|
« 1 » 2 |