Wężyk jest pisany w konsoli (Windows), przy użyciu Dev-C++.
Mapa to: char Mapa[22][79];
Ruch wygląda w ten sposób:
Kopiuj
bool ruch()
{
Poprawnosc = true;
Kierunek = getch();
Bufor.X = Glowa.X;
Bufor.Y = Glowa.Y;
switch (Kierunek)
{
case 'w': ruch_gora();
break;
case 's': ruch_dol();
break;
case 'd': ruch_prawo();
break;
case 'a': ruch_lewo();
break;
default: Poprawnosc = false;
return false;
}
ruch_tulowiem();
return true;
}
Poprawnosc - zmienna bool sprawdzająca poprawnosc wejscia
Kierunek - zmienna char, przechowująca kierunek nadany przez gracza
Bufor - struktura przechowująca współrzędne miejsca, gdzie "przed chwilą" była głowa
Glowa - struktura przechowująca współrzędne głowy węża
ruch_tulowiem() - funkcja poruszająca tułowiem, żeby "nadążał" za głową
I tutaj funkcja ruch_gora()
(reszta wygląda analogicznie)
Kopiuj
bool ruch_gora()
{
if (Glowa.X < 1)
{
Zderzenie = true;
return false;
}
Mapa[Glowa.X][Glowa.Y] = ' ';
Glowa.X--;
Mapa[Glowa.X][Glowa.Y] = 'O';
return true;
}
Zderzenie - zmienna bool kontrolująca, czy wężyk się zderzył ze ścianą (lub z własnym ogonem)
Aha i jeszcze zaznaczę, że nie umiem korzystać z takich rzeczy jak wątki, czy timer.
I właśnie cały problem polega na tym, że przy każdym wywołaniu funkcji ruch() oczekuje ona na znak i wychodzi na to, że Wężyk... jest grą turową :/