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();
};