jaupl Temat założony przez niniejszego użytkownika |
Gra w karty - błędy związane z losowaniem » 2011-06-30 11:24:04 Witam. napisałem ostatnio program który rozdaje karty. (na potrzeby gry ) program losuje liczby (które potem będą zamienione na karty ) problem polega na tym że te liczby się nie zgadzają z zakresem podanym do wylosowania. samo losowanie chyba nie stanowi problemu ... bynajmniej nie powinno, no chyba że pominąłem coś w sprawdzaniu, błąd jest raczej zrobiony w funkcji sprawdzanie ;p Z góry dzięki za odpowiedź ;) a oto kod : #include <iostream> #include <cstdlib> #include <ctime> #include <conio.h> using namespace std; bool sprawdzenie( int * tablica, int losowana, int * tablica2, int losowana2, int z ) { if( tablica[ z ] == losowana && tablica2[ z ] == losowana2 ) { return false; } else { return true; } } int main() { int losowa, losowa2; int znak_karty[ 5 ]; int kolor_karty[ 5 ]; for( int z = 0; z < 5; z++ ) { do { srand( time( NULL ) ); losowa =( rand() % 13 ) + 2; losowa2 =( rand() % 4 ) + 1; } while( sprawdzenie( znak_karty, losowa, kolor_karty, losowa2, z ) == false ); znak_karty[ z ] = losowa; kolor_karty[ z ] = losowa2; } for( int z = 0; z < 5; z++ ) { cout << znak_karty[ z ] << endl << kolor_karty[ z ] << endl; } getch(); return 0; }
* poprawione ;) ale co dalej bo nie wytłumaczyłeś błędu ?? ;P |
|
pekfos |
» 2011-06-30 11:39:57 indeksy tablic liczy się od zera. popraw to a ja tymczasem udam sie zjeść śniadanie..
// ty w ogóle modyfikujesz te dwie tablice? i co w ogóle robi funkcja sprawdzenie? odpowiedz sobie na te pytania bo twój kod jest bez sensu. |
|
murek |
» 2011-06-30 11:52:36 tak z grubsza to nie widze zadnego zapisu do tablic ;]
przypisujesz dwom int wartosci losowe, ale nie zapisuejsz tych wartosci do tablic |
|
jaupl Temat założony przez niniejszego użytkownika |
» 2011-06-30 15:02:21 no tak, sam to już zauważyłem i już zmieniłem, tyle, że chyba coś jeszcze schrzaniłem, bo teraz każda wyświetlona karta jest taka sama . |
|
murek |
» 2011-06-30 15:09:49 jak wypelniasz tablice?
nie zauwazylem, ze edytowales.
sprawdz czy w dobrym miejscu ja wypelaniasz |
|
jaupl Temat założony przez niniejszego użytkownika |
» 2011-06-30 15:24:42 #include <iostream> #include <cstdlib> #include <ctime> #include <conio.h> using namespace std; bool sprawdzanie( int * tablica, int losowana, int * tablica2, int losowana2 ) { int i = 0; while( i < 5 ) { if( tablica[ i ] == losowana && tablica2[ i ] == losowana2 ) { return false; } i++; } if( tablica[ i ] != losowana || tablica2[ i ] != losowana2 ) { return true; } } int main() { int losowa, losowa2; int znak_karty[ 5 ]; int kolor_karty[ 5 ]; for( int z = 0; z < 5; z++ ) { do { srand( time( NULL ) ); losowa =( rand() % 13 ) + 2; losowa2 =( rand() % 4 ) + 1; } while( sprawdzanie( znak_karty, losowa, kolor_karty, losowa2 ) == false ); znak_karty[ z ] = losowa; kolor_karty[ z ] = losowa2; } for( int z = 0; z < 5; z++ ) { cout << znak_karty[ z ] << endl << kolor_karty[ z ] << endl; } getch(); return 0; }
// koniec zabawy :) dzięki chłopaki ;p ewentualnie dziewczyny ;) program działa jak trzeba. gdybym miał jeszcze problem w tej grze to dalej będę tu pisał . |
|
pekfos |
» 2011-06-30 16:36:10 ten kod jest rozwiązaniem? |
|
jaupl Temat założony przez niniejszego użytkownika |
» 2011-06-30 18:49:08 Hmm ... problemu który na początku przedstawiłem ? no, tak. chyba tak. Chociaż to że pytasz zasiewa we mnie nutkę ... niepewności . Ale oczywiście jeśli chodzi o grę to nie jest to całość. Mam już zresztą dalszą część ;p Nadal nie całą . i kolejny problem . gdy mam na przykład parę asów to nie wyświetla mi wyniku . tylko "No poker" . a parę dziesiątek wyświetliło ^^ następnym z moich problemów jest to że nie wiem jak sprawić by program wyświetlał czego to jest para nie robiąc osobnych warunków dla każdej pary. a oto zmodyfikowany kod : #include <iostream> #include <cstdlib> #include <ctime> #include <conio.h> using namespace std; bool sprawdzanie( int * tablica, int losowana, int * tablica2, int losowana2 ) { int i = 0; while( i < 5 ) { if( tablica[ i ] == losowana && tablica2[ i ] == losowana2 ) { return false; } i++; } if( tablica[ i ] != losowana || tablica2[ i ] != losowana2 ) { return true; } } int main() { int warunek; int pik_pl, trefl_pl, kier_pl, karo_pl = 0; int A_pl, T_pl, N_pl, J_pl, Q_pl, K_pl = 0; int losowa, losowa2; int znak_karty[ 5 ]; int kolor_karty[ 5 ]; for( int z = 0; z < 5; z++ ) { do { srand( time( NULL ) ); losowa =( rand() % 6 ) + 9; losowa2 =( rand() % 4 ) + 1; } while( sprawdzanie( znak_karty, losowa, kolor_karty, losowa2 ) == false ); znak_karty[ z ] = losowa; kolor_karty[ z ] = losowa2; } for( int z = 0; z < 5; z++ ) { switch( znak_karty[ z ] ) { case 9: cout << "Dziewiatka "; N_pl += 1; break; case 10: cout << "Dziesiatka "; T_pl += 1; break; case 11: cout << "Jopek "; J_pl += 1; break; case 12: cout << "Dama "; Q_pl += 1; break; case 13: cout << "Krol "; K_pl += 1; break; case 14: cout << "As "; A_pl += 1; break; default: break; } switch( kolor_karty[ z ] ) { case 1: cout << "pik." << endl; pik_pl += 1; break; case 2: cout << "trefl." << endl; trefl_pl += 1; break; case 3: cout << "kier." << endl; kier_pl += 1; break; case 4: cout << "karo." << endl; karo_pl += 1; break; default: break; } } cout << "sekwens ktory masz to :" << endl; if(( A_pl == 1 && K_pl == 1 && Q_pl == 1 && J_pl == 1 && T_pl == 1 &&( karo_pl == 5 || kier_pl == 5 || pik_pl == 5 || trefl_pl == 5 ) ) ||( K_pl == 1 && Q_pl == 1 && J_pl == 1 && T_pl == 1 && N_pl == 1 &&( karo_pl == 5 || kier_pl == 5 || pik_pl == 5 || trefl_pl == 5 ) ) ) { if( N_pl == 1 ) { cout << "Mały "; } cout << "POKER!!" << endl; warunek = 1; } if(( karo_pl == 5 || kier_pl == 5 || pik_pl == 5 || trefl_pl == 5 ) && warunek != 1 ) { cout << "Kolor !!" << endl; warunek = 1; } if(( A_pl == 4 || K_pl == 4 || Q_pl == 4 || J_pl == 4 || T_pl == 4 || N_pl == 4 ) && warunek != 1 ) { cout << "Kareta !!" << endl; warunek = 1; } if(( A_pl == 3 || K_pl == 3 || Q_pl == 3 || J_pl == 3 || T_pl == 3 || N_pl == 3 ) && warunek != 1 ) { cout << "trojka." << endl; } if(( A_pl == 2 || K_pl == 2 || Q_pl == 2 || J_pl == 2 || T_pl == 2 || N_pl == 2 ) && warunek != 1 ) { cout << "para." << endl; warunek = 1; } if((( A_pl == 1 && K_pl == 1 && Q_pl == 1 && J_pl == 1 && T_pl == 1 ) ||( K_pl == 1 && Q_pl == 1 && J_pl == 1 && T_pl == 1 && N_pl == 1 ) ) && warunek != 1 ) { if( N_pl = 1 ) { cout << "Mały"; } cout << " street." << endl; warunek = 1; } if( warunek != 1 ) { cout << "No Poker." << endl; } cout << "wcisni dowolny klawisz by zakonczyc prace programu " << endl; getch(); return 0; }
A właśnie ;P wiem że moje kody są koślawe ale dopiero zaczynam i w dodatku dopiero kończę gimnazjum więc mam jeszcze trochę czasu na naukę :D stricte : proszę o wyrozumiałość :) |
|
« 1 » 2 3 |