Problem jest następujący :
Liczenie punktów , w przypadku przekroczenia linii I bądź II gracza działa poprawnie . Niestety po najechaniu piłki na jedną z przeszkód zamiast zwiększyć wartość "wynik1" o 1 to wyświetla mi się liczba kompletnie mi nie znana.
else if(przeszkoda1x == pilkax && przeszkoda1y == pilkay) { if(pilka->getKierunek()==PRAWA || pilka->getKierunek()==DOLPRAWA|| pilka->getKierunek()==GORAPRAWA) { wynik1Upp(); } if(pilka->getKierunek()==LEWA || pilka->getKierunek()==DOLLEWA || pilka->getKierunek()==GORALEWA) { wynik2Upp(); } } void Menedzer::wynik1Up() { wynik1++; pilka->reset(); gracz1->reset(); gracz2->reset(); } void Menedzer::wynik2Up() { wynik2++; pilka->reset(); gracz1->reset(); gracz2->reset(); } void Menedzer::wynik1Upp() { wynik1++; } void Menedzer::wynik2Upp() { wynik2++; }
Przeszkody tworzę w głównym konstruktorze gry :
Menedzer::Menedzer(int s , int w) { gora1 = 'w'; gora2 = 'i'; dol1 = 's'; dol2 = 'k'; wynik1 = wynik2 = 0; szerokosc = s; wysokosc = w; pilka = new Pilka(s / 2 , w / 2); // dynamiczne utworzenie obiektu klasy "Pilka" gracz1 = new Paletka(1 , w / 2 - 3); // -//- gracz2 = new Paletka(s - 2 , w / 2 - 3); przeszkoda1 = new Przeszkoda(s - 10 , w /2); przeszkoda2 = new Przeszkoda(s - 30 , w /3); }
class Menedzer:public Menu { public: Menedzer(int s , int w); ~Menedzer(); void rysuj(); void wejscie(); void wejscie1(); void start(); void start1(); void kolizje(); private: int wysokosc , szerokosc; int wynik1 , wynik2; char gora1 , dol1 , gora2 , dol2; Pilka *pilka; Paletka *gracz1; Paletka *gracz2; Przeszkoda *przeszkoda1; Przeszkoda *przeszkoda2; void wynikReset(); void wynik1Reset(); void wynik2Reset(); void wynik1Up(); void wynik2Up(); void wynik1Upp(); void wynik2Upp(); void pilkaStop(); int getWynik1(); };