kolusek18 Napisano Styczeń 23, 2006 Zgłoś Share Napisano Styczeń 23, 2006 witam!zrobilem taka mala gierke w stylu jednorekiego bandyty. losuja sie trzy liczby i jak wszystkie beda takie same to ukazuje sie napis 'wygrales'. do losowania liczb urzywam takiego czegos:Pascal int znak1(){ srand ((int) time(NULL)); int zn1 = rand() % 4 +1;ale dzieki temu zapisowi wszystkie liczby sa takie same bo zaleza od jakiegos tam czasu procesora, dlatego zmienilem troche w kazdej z tych funkcji i wyszlo mi takie:Pascal int znak1(){ srand ((int) time(NULL)); int zn1 = rand() % 4 +1; gotoxy(35,8); cout << zn1; return zn1;}int znak2(){ srand ((int) time(NULL)); int zn2 = rand() % 3 +2; gotoxy(36,8); cout << zn2; return zn2;}int znak3(){ srand ((int) time(NULL)); int zn3 = rand() % 2 +3; gotoxy(37,8); cout << zn3; return zn3;}ale to nie do konca mi odpowiada, bo np. pierwsza liczba losuje sie z innego przedzialu od nastepneji nastepnej.moze ktos sprawnic te kody lub podac mi jakas alternatyzna komende?? tu jest ta moja gra http://www.hubson.republika.pl/cpp/bandyta.exe Link do komentarza Udostępnij na innych stronach More sharing options...
Iskar Napisano Styczeń 23, 2006 Zgłoś Share Napisano Styczeń 23, 2006 srand wywołujesz tylko raz, na początku programu po to, żeby liczby za każdym odpaleniem programu się od siebie różniły. Link do komentarza Udostępnij na innych stronach More sharing options...
marek_haj Napisano Styczeń 23, 2006 Zgłoś Share Napisano Styczeń 23, 2006 mam tylko drobne pytanie po ki grzyb za kazdym razem seedujesz gererator ?na poczatku programu wprowadzasz seedPascalsrand ((int) time(NULL));a potem jedziesz z losowaniem ... Pascalint znak1(){ int zn1 = rand() % 4 +1; gotoxy(35,8); cout << zn1; return zn1;}int znak2(){ int zn2 = rand() % 4 +1; gotoxy(36,8); cout << zn2; return zn2;}int znak3(){ int zn3 = rand() % 4 + 1; gotoxy(37,8); cout << zn3; return zn3;} Sprawdz czy to ci cos daje. Tak na marginesie. Jest wytlumaczenie dlaczego dostajesz ciagel te sama liczbe Pozdrawiam Link do komentarza Udostępnij na innych stronach More sharing options...
kolusek18 Napisano Styczeń 23, 2006 Autor Zgłoś Share Napisano Styczeń 23, 2006 ja to strasznie poczatkujacy jestem i jak tylko znalazlem te funkcje( gotowy zapis nic nie zmienialem nic procz z 100 na 4,3 i 2) i myslalem ze tak musi byc wiec pisalem to razem ze srand. sprawdze to co napisaliscie i jak bede mial jeszcze jakies z tym problemy to znow cos napisze Link do komentarza Udostępnij na innych stronach More sharing options...
marek_haj Napisano Styczeń 23, 2006 Zgłoś Share Napisano Styczeń 23, 2006 prosze baw sie dobrze Link do komentarza Udostępnij na innych stronach More sharing options...
kolusek18 Napisano Styczeń 24, 2006 Autor Zgłoś Share Napisano Styczeń 24, 2006 zrobilem tak jak radziliscie,ale cos ni wychodzi. mianowicie chce zeby napis wygrana wyskakiwal kiedy wszustkie liczby beda takie same a on potrafi wyskoczyc nawet gdy tylko dwie z tych trzech beda sobie rowne.napiszcie co to jest zle i jak to poprawic.o to kod calej mojej gry : Pascal #include <cstdlib>#include <iostream>#include <ctime>#include <conio.h>#include <windows.h>using namespace std;void gotoxy();int wstep1();int wstep2();int wstep3();int ramka(); int znak1();int znak2();int znak3();int komunikat();int main(int argc, char *argv[]){ wstep1(); wstep2(); wstep3(); ramka(); srand ((int) time(NULL)); while(1){ znak1(); znak2(); znak3(); komunikat(); cout<<endl<<endl<<endl<<endl<<"Aby wylosowac liczby nacisnij dowolny klawisz. aby wyjsc nacisnij Esc."; if (getch()==27) break; } return EXIT_SUCCESS;}void gotoxy(const int x, const int y) { HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = {x, y}; SetConsoleCursorPosition(hCon, coord); }//*************** LOGO GLOWNE **************** int wstep1(){gotoxy(22,0); cout<<"JEDNOREKI BANDYTA by Mr. Hubson";} int wstep2(){gotoxy(22,1); cout<<"===============================";} int wstep3(){gotoxy(22,3); cout<<" www.hubson.republika.pl ";} //************** RAMKA **********************************int ramka(){ gotoxy(29,6); cout<<"#################"; gotoxy(29,7); cout<<"#"; gotoxy(29,8); cout<<"#"; gotoxy(29,9); cout<<"#"; gotoxy(29,10); cout<<"#"; gotoxy(29,11); cout<<"#"; gotoxy(29,12); cout<<"#################"; gotoxy(45,7); cout<<"#"; gotoxy(45,8); cout<<"#"; gotoxy(45,9); cout<<"#"; gotoxy(45,10); cout<<"#"; gotoxy(45,11); cout<<"#"; }//*********** LOSOWANE LICZBY **************************int znak1(){ int zn1 = rand() % 4 +1 ; gotoxy(35,8); cout << zn1; return zn1;}int znak2(){ int zn2 = rand() % 4 +1; gotoxy(36,8); cout << zn2; return zn2;}int znak3(){ int zn3 = rand() % 4 +1; gotoxy(37,8); cout << zn3; return zn3;}//************ KOMUNIKAT WYGRANA - PRZEGRANA ****************************int komunikat(){ if (znak1() == znak2() && znak2()==znak3()){gotoxy(31,10); cout<<" Wygrales!!! ";} else { gotoxy(31,10); cout<<"Przegrales ;(";}} Link do komentarza Udostępnij na innych stronach More sharing options...
marek_haj Napisano Styczeń 24, 2006 Zgłoś Share Napisano Styczeń 24, 2006 a moze cus takiego ...//************ KOMUNIKAT WYGRANA - PRZEGRANA ****************************Pascalint komunikat(){ if (znak1() == znak2() == znak3()){gotoxy(31,10); cout<<" Wygrales!!! ";} else { gotoxy(31,10); cout<<"Przegrales ;(";}} albo z innej beczki ...Pascalint I1 = znak1();int I2 = znak2();int I3 = znak3(); if (I1 == I2 == I3){gotoxy(31,10); cout<<" Wygrales!!! ";} else { gotoxy(31,10); cout<<"Przegrales ;(";}problem w tym ze wPascalznak1() == znak2() && znak2()==znak3()znak 2 jest dwa razy losowany a liczby wyjda zupelnie inne Pozdrawiam Link do komentarza Udostępnij na innych stronach More sharing options...
Kezard Napisano Styczeń 24, 2006 Zgłoś Share Napisano Styczeń 24, 2006 [quote] int komunikat(){ if (znak1() == znak2() == znak3()){gotoxy(31,10); cout<<\" Wygrales!!! \";} else { gotoxy(31,10); cout<<\"Przegrales ;(\";}}[/syntax:b5ff3f6534] [/quote]Ten kod jest nieprawidłowy. Każda funkcja powinna zwracać jakąś wartość. Jeśli niechesz nic zwracać, zamień typ funkcji na void. Można też troche przerobić funkcje, niema potrzeby dwa razy wstawiać fukncje z tymi samymi parametrami (gotoxy) :Pascalvoid komunikat(){ char* result; if (znak1() == znak2() == znak3()) restul = "wygrales"; else result = "przegrales"; gotoxy(31,10); cout << result;} Pozatym zamień to :Pascalint wstep1(){gotoxy(22,0); cout<<"JEDNOREKI BANDYTA by Mr. Hubson";} int wstep2(){gotoxy(22,1); cout<<"===============================";} int wstep3(){gotoxy(22,3); cout<<" www.hubson.republika.pl ";} na :Pascalvoid wstep(){gotoxy(22,0); cout<<"JEDNOREKI BANDYTA by Mr. Hubson";} gotoxy(22,1); cout<<"===============================";} gotoxy(22,3); cout<<" www.hubson.republika.pl ";} A z tego kodu:Pascalint znak1(){ int zn1 = rand() % 4 +1 ; gotoxy(35,8); cout << zn1; return zn1;}int znak2(){ int zn2 = rand() % 4 +1; gotoxy(36,8); cout << zn2; return zn2;}int znak3(){ int zn3 = rand() % 4 +1; gotoxy(37,8); cout << zn3; return zn3;} można zrobić :Pascalvoid znak(int x,int y){ int zn = rand() % 4 +1; gotoxy(x,y); cout << zn; } Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.