Gra w karty - błędy związane z losowaniem
Ostatnio zmodyfikowano 2011-07-01 20:32
pekfos |
» 2011-06-30 19:53:29 i to się nie sypie? PS: w sumie nie musi. grzebanie poza statycznie alokowaną tablicą nie zawsze się tak kończy.. |
|
Elaine |
» 2011-06-30 20:07:33 Gdzie ty widzisz statycznie alokowaną tablicę? |
|
jaupl Temat założony przez niniejszego użytkownika |
» 2011-06-30 20:23:52 No cóż, ja tylko bazuje na tym co mnie nauczono a wszystko to pochodzi z kursu. jak na to nie patrzeć to jestem samoukiem. A jeśli dostrzegasz jakieś błędy to wskaż proszę jakie i ewentualnie je wyjaśni :) Wielkie dzięki . ;) (nawet jeśli to było coś z kursu to mogłem przeoczyć) |
|
pekfos |
» 2011-07-01 10:50:02 Gdzie ty widzisz statycznie alokowaną tablicę? |
to już nie wiem jak nazwać tablicę której pamięć przydziela kompilator. int znak_karty[ 5 ]; int kolor_karty[ 5 ]; 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; } } czyli jak żaden warunek w pętli się nie spełni to grzebiesz poza tablicą. |
|
jaupl Temat założony przez niniejszego użytkownika |
» 2011-07-01 11:06:31 czyli, jeśli dobrze rozumiem wystarczy tam zmienić warunek z : if( tablica[ i ] == losowana && tablica2[ i ] == losowana2 )
na przykład na taki : tak ?? Wróć ... ten warunek jest tam do niczego nie potrzebny ^^ ;p więc zostawiam samo return true; po skończeniu pętli :) // Btw. program przez tą pętlę strasznie wydłużył czas działania. to znaczy chyba przez nią ... jest jakiś sposób żeby uzyskać ten sam efekt przy krótszym czasie ?? bo w końcu kilka sekund to już spora różnica ... |
|
pekfos |
» 2011-07-01 11:11:05 operator porównania to == a nie = i powiedz co ma robić ten zapis: int pik_pl, trefl_pl, kier_pl, karo_pl = 0; bo wygląda jakbyś próbował przypisać wszystkim tym zmiennym wartość 0 co do pętli to rozumiem że sprawdzanie() zabezpiecza przed powtórzeniami. w takim razie po co sprawdzasz całą tablicę po wpisaniu np jednej wartości. ogranicz to w ten sposób że wpisujesz 1. wartość - nie sprawdzasz wpisujesz 2. wartość - sprawdzasz 1. wpisujesz n. wartość - sprawdzasz do n-1 |
|
jaupl Temat założony przez niniejszego użytkownika |
» 2011-07-01 15:31:56 Tak, ponieważ chcę im wszystkim przypisać wartość zero. Potem , gdy karty już będą wylosowane te zmienne będą miały swoje wartości w zależności od tego ile gracz/komputer będą mieli kart o tym kolorze. chcę to wykorzystać jako warunek w puźniejszym kodzie (który już napisałem) Który będzie określał czy wygrał komputer czy wygrał gracz . zostało mi jeszcze trochę roboty z wymianą kart i obstawianiem pieniędzy i wszystko będzie działać ... no i jeszcze pewnie poprawki. A ...i nie mam pomysłu na to jak stworzyć warunek do fula lub do dwóch par ... Czy da się jakoś określić ile warunków pisanych tak : if( warunek || warunek ) zostało spełnionych ?? |
|
pekfos |
» 2011-07-01 15:43:36 tak pisanych - nie. ale sprawdź to: #include <vector> #include <algorithm>
vector < bool > con; bool check( bool a ) { return a; }
con.push_back( a != 5 ); con.push_back( c < 6 );
int spelnione =( int ) count_if( con.begin(), con.end(), check ); i zamiast if( a != 5 || c < 6 ) pisz if( spelnione > 0 ) chcę im wszystkim przypisać wartość zero |
int a, b, c = 0; to to samo co czyli przypisujesz wartość tylko jednej zmiennej. |
|
1 « 2 » 3 |