Cześć, potrzebuję zmienić wartość bool Przegrana na false po wykonaniu pętli while(). Jest jakaś możliwość bez ingerowania w klasę ?
class GraSnake
{
private:
enum Kierunek
{
STOP = 0,
LEWO,
PRAWO,
GORA,
DOL
};
Kierunek Polozenie;
int DlugWeza;
bool Przegrana;
bool WydrWeza;
const int Dlugosc;
const int Wysokosc;
int WazX, WazY, OwocX, OwocY;
int PolWezX[100], PolWezY[100];
static void MENU();
static void PRZEGRANA();
void kla();
void UstawWeza();
void Plansza();
void ZasaPlanszy();
void StartGry();
public:
GraSnake();
void MenuGry();
};
GraSnake::GraSnake() :Wysokosc(22), Dlugosc(52)
{
DlugWeza = 0;
Przegrana = false;
WydrWeza = false;
WazX = 0;
WazY = 0;
OwocX = 0;
OwocY = 0;
for (int i = 0; i < 100; i++) {
PolWezX[i] = 0;
PolWezY[i] = 0;
}
}
void GraSnake::UstawWeza()
{
Przegrana = false;
Polozenie = STOP;
WazX = Dlugosc / 2;
WazY = Wysokosc / 2;
OwocX = rand() % Dlugosc;
OwocY = rand() % Wysokosc;
}
void GraSnake::ZasaPlanszy()
{
int poprzX = PolWezX[0];
int poprzY = PolWezY[0];
int poprzXX, poprzYY;
PolWezX[0] = WazX;
PolWezY[0] = WazY;
for (int i = 1; i < DlugWeza; i++)
{
poprzXX = PolWezX[i];
poprzYY = PolWezY[i];
PolWezX[i] = poprzX;
PolWezY[i] = poprzY;
poprzX = poprzXX;
poprzY = poprzYY;
}
switch (Polozenie)
{
case 1:
WazX--;
break;
case 2:
WazX++;
break;
case 3:
WazY--;
break;
case 4:
WazY++;
break;
default:
break;
}
if (WazX >= Dlugosc)
{
WazX = 0;
}
else if (WazX < 0)
{
WazX = Dlugosc - 1;
}
if (WazY >= Wysokosc)
{
WazY = 0;
}
else if (WazY < 0)
{
WazY = Wysokosc - 1;
}
for (int i = 0; i < DlugWeza; i++)
{
if (PolWezX[i] == WazX && PolWezY[i] == WazY)
{
Przegrana = true;
}
}
if (WazX == OwocX && WazY == OwocY)
{
OwocX = rand() % Dlugosc;
OwocY = rand() % Wysokosc;
DlugWeza += 1;
}
}
void GraSnake::StartGry()
{
UstawWeza();
while (!Przegrana)
{
Plansza();
kla();
ZasaPlanszy();
Sleep(100);
}
}
Pozdrawiam