Pentalinio Opublikowano 17 Czerwca 2007 Udostępnij Opublikowano 17 Czerwca 2007 Robię znaną grę - wisielca. Uczę się C++ od wczoraj (właściwie to ja z C na C++ przechodzę) . I dam tu mój kod, mimo wszystko :unsure: : #include <string> #include <iostream> #include <conio.h> std::string aktTekst; std::string staryZnak; unsigned ZliczZnaki(std::string strTekst, char chZnak) { int o = 0; aktTekst=""; staryZnak+=chZnak; std::cout << std::endl << "Oto co wyszlo:" << std::endl << std::endl; for (unsigned i = 0; i <= strTekst.length() - 1; ++i) { if (strTekst[i] == chZnak) { std::cout << chZnak << " "; aktTekst+=chZnak; } else { if (o <= staryZnak.length()) { if (strTekst[i] == staryZnak[o]) { std::cout << staryZnak[o]; aktTekst+=staryZnak[o]; o++; } else { std::cout << " _ "; aktTekst+='_'; } } } } return chZnak; } int main() { std::string strNapis; int i = 0; for(i=0; i < 24; i++) {std::cout << std::endl;} std::cout << "Gracz pierwszy wkracza do akcji :D." << std::endl; std::cout << std::endl <<"Podaj dla gracza drugiego haslo: "; std::cin >> strNapis; char chSzukanyZnak; std::cout << "Gracz drugi wkracza do akcji :D." << std::endl; do { int i = 0; for(i=0; i < 24; i++) {std::cout << std::endl;} std::cout << std::endl << "Podaj jakas litere: "; std::cin >> chSzukanyZnak; ZliczZnaki(strNapis, chSzukanyZnak); getch(); }while(aktTekst!=strNapis); std::cout << std::endl << std::endl << "Gratuluje! Wygrales!"; getch(); return main(); } Edit: Kod uległ zmianie. Teraz mam aż 2 problemy. 1 to to, że muszę wszystkiel litery pisać po kolei. Drugi, to to, że nie może być kilka tych samych liczb. Chyba sobie odpuszczę :/ . Takie banalne błędy... PS Niech się wypowie ktoś lepszy niż ja :P , bo zaraz ktoś wyskoczy z tekstem "dziwna sprawa..." Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Vardi Opublikowano 17 Czerwca 2007 Udostępnij Opublikowano 17 Czerwca 2007 Nie potrafie Cię zrozumieć, może wytłumacz to na jakimś przykładzie ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Micanser Opublikowano 17 Czerwca 2007 Udostępnij Opublikowano 17 Czerwca 2007 Hmm... Dziwna sprawa XD. Może zamiast 0 wpisz "i" (pewnie głupi pomysł, ale nie zabardzo znam się na c++, umiem tylko podstawowe podstawy) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 17 Czerwca 2007 Autor Udostępnij Opublikowano 17 Czerwca 2007 Ludzie! ... Nie możecie tego skompilować i uruchomić?! Zobaczycie, że gdy wpiszesz hasło: lolek , a potem druga osoba napisze znak 'l', to pojawi się: l _ l _ _ . Czyli dobrze, pokaże 'l' i drugie 'l'. Potem jak napiszesz 'o' to się pojawi l o l _ _ . I też dobrze! Ale gdy napiszesz znowu 'e', to pokaże się _ o _ e _ . Zapomni ostatnie znaki i ja to celowo zrobiłem, a teraz oczekuje, że ktoś mi pomoże to zmienić. Rozumiem jakby napisał coś takiego Nikas, czy Jontor, ale Micanser, Vardi? Zawiodłem się na was :wink: ... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 17 Czerwca 2007 Udostępnij Opublikowano 17 Czerwca 2007 Z tego co widzę to sam swojego kodu nie czaisz.. Z tego coś tam napisał(skopiował?) nie można nic zrozumieć.. Może jakieś komentarze opisy aby można było to zrozumieć.. no i użyj przestrzeni nazw std.. skróci kod. A co do problemu może jakieś funkcje? insert, swamp, replace? Trochę myślenia... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo_4649 Opublikowano 4 Lipca 2007 Udostępnij Opublikowano 4 Lipca 2007 Ostatnio napisałem wisielca w C++ i działa bezproblemowo. :] Gdybyś chciał mogę dać kod. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sylwester Opublikowano 4 Lipca 2007 Udostępnij Opublikowano 4 Lipca 2007 No wiesz,mi możesz z chęcią udostępnić kod :] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo_4649 Opublikowano 4 Lipca 2007 Udostępnij Opublikowano 4 Lipca 2007 W sumie nie jest to dokładna wersja wisielca, ale jak ktoś się zna choć trochę na C++ może sobie to edytować. :P #include <string> #include <iostream> using namespace std; string gra(char znak,string tekst,string odg) { for (unsigned i=0;i<=tekst.length()-1;i++) { if (tekst[i]==znak) odg[i]=znak; } return odg; } int main() { string tekst; cout<<"Gracz nr 1\n"; cout<<"Podaj wyraz do odgadniecia: "; cin>>tekst; cin.ignore(); string odg=tekst; system("cls"); for (unsigned i = 0;i<=tekst.length()-1;i++) { odg[i]='*'; } char znak; cout<<"Gracz nr 2"; int proba=0; for (;;) { cout<<"\nPodaj znak: "; cin>>znak; cin.ignore(); proba++; odg=gra(znak,tekst,odg); cout<<gra(znak,tekst,odg); if (odg==tekst) { cout<<"\nGratulacje! Odgadles wyraz "<<odg<<" podajac "<<proba<<" litery!"; break; } } getchar(); return 0; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się