Pomoc z napisaniem gry oczko, kilka pytań.
Ostatnio zmodyfikowano 2017-04-23 16:33
Avantu Temat założony przez niniejszego użytkownika |
Pomoc z napisaniem gry oczko, kilka pytań. » 2017-04-22 18:28:38 Witam! Na studiach mam programowanie obiektowe, z którego jestem raczej lewy. Na zajęciach napisaliśmy grę oczko którą mamy dokończyć, w związku z czym mam kilka problemów. Po pierwsze mam taki kod na dobór kart: bool Czlowiek::czyNastepna() { cout << "Twoje karty to:" << endl; wyswietl(); char wybor; do { cout << "Czy chcesz nastepna karte?[T/N]"; cin >> wybor; if( wybor == 'T' || wybor == 't' ) return true; else if( wybor == 'N' || wybor == 'n' ) { return false; } cout << "wybrano nieprawidlowa opcje" << endl; cin.sync(); cin.ignore(); } while( wybor ); }
Problem jest taki, że gracz komputerowy korzysta właśnie z klasy człowiek. Gdy chcę dobrać karty, wszystko jest ok, ale gdy już nie chcę dobierać kart, wpisuję n, i program ponownie mnie pyta czy chcę dobrać karty do póki gracze komputerowi nie zaprzestaną ich dobierać, a dobierają je dopóki mają mniej niż zadeklarowana ilość punktów (np. 15). Jest jakaś opcja żeby program zapamiętywał że raz już wpisalimy "nie" i za każdym kolejnym razem już bez naszego pytania wyrzucał false? Sama funkcja grania wygląda tak: void Oczko::graj() { t->tasuj(); bool warunek; do { warunek = false; for( int i = 0; i < 5; ++i ) { if( g[ i ] != NULL && g[ i ]->czyNastepna() ) { warunek = true; g[ i ]->dodajKarte( t->dajKarte() ); } } } while( warunek ); for( int i = 0; i < 5; ++i ) { if( g[ i ] != NULL ) { g[ i ]->wyswietl(); cout << "Punkty: " << g[ i ]->policzPunkty() << endl; } } }
Z góry dzięki za pomoc! |
|
maly7 |
» 2017-04-23 01:48:19 Żeby zapamiętywał, deklaruj zmienną char wybor; w klasie a nie jako zmienną lokalną. Następnie już wystarczy sprawdzać wartość zmiennej wybor gdzie chcesz (w metodzie czyNastepna lub graj). |
|
Avantu Temat założony przez niniejszego użytkownika |
» 2017-04-23 15:16:30 No dobra, ale nadal nie rozumiem co muszę dopisać do programu żeby nie pytał mnie za każdym razem gdy komputer chce dobrać kartę :/
//Edit: Zresztą wpisałem char wybor; do public klasy czlowiek, i nawet jakbym chcial to teraz użyć w oczko::graj to co musze zrobic? Wpisując Czlowiek::wybor dostaje komunikat invalid use of non static data member "Czlowiek::wybor". |
|
maly7 |
» 2017-04-23 16:21:24 Jeśli masz metodę o nazwie wybor to zmienna musi mieć inną nazwę. Jeśli chcesz, żeby metoda czyNastpepna zwracała wartość false po podaniu n to na początku metody możesz wstawić po prostu: if( wybor == 'N' || wybor == 'n' ) return false;
|
|
Avantu Temat założony przez niniejszego użytkownika |
» 2017-04-23 16:33:44 @maly7: Faktycznie, chyba działa, dzięki! Metoda czyli funkcja w klasie? Bo ja do klasy w publicu dopisałem do prostu "char wybor;", to to też jest metoda?
//Edit: Teraz muszę jeszcze napisać funkcje która będzie na koniec gry porównywała liczbę punktów każdego gracza i wybierała zwycięzcę, i w sumie też nie mam pomysłu :/ |
|
« 1 » |