Witam :) początkujący phoghamista 1 rok studiów, nudzi mi się na wykładach i zaczynam się bawić kodem. Co pierwsze? hmm może prosty snake? challenge accept!
Idzie mi całkiem nieźle w tym programie, ale mam jeden szczegół z którym sobie nie mogę poradzić,
mianowicie przy wciskaniu jednego klawisza z drobnym odstępem to w pętli do opoznienia on zostaje w buforze i w funkcji elegancko działa a potem się usuwa while(_kbhit())_getch();
No i fajnie, ale jak kliknie się kilka razy to chyba bufor ma np A B i odczyta A zamiast B, tak przynajmniej myślę, poradzi ktoś może coś??
while (true)
{
sterowanie(mapa, ruch, pozx, pozy);
reload_mapy(mapa, mapa_x, mapa_y, mapa_z);
Sleep(500);
}
void sterowanie(int *** mapa, char & ruch, int &pozx, int &pozy)
{
if (_kbhit())
{
switch (_getch())
{
case 'w':
if (ruch != 's')ruch = 'w';
break;
case 's':
if (ruch != 'w')ruch = 's';
break;
case 'a':
if (ruch != 'd')ruch = 'a';
break;
case 'd':
if (ruch != 'a')ruch = 'd';
break;
}
}
while (_kbhit())_getch();
if (ruch == 'w' ) { mapa[pozx - 1][pozy][1] = 1; mapa[pozx][pozy][1] = 0; mapa[pozx][pozy][2] = 1; pozx--; }
if (ruch == 's' ) { mapa[pozx + 1][pozy][1] = 1; mapa[pozx][pozy][1] = 0; mapa[pozx][pozy][2] = 1; pozx++; }
if (ruch == 'a' ) { mapa[pozx][pozy - 1][1] = 1; mapa[pozx][pozy][1] = 0; mapa[pozx][pozy][2] = 1; pozy--; }
if (ruch == 'd' ) { mapa[pozx][pozy + 1][1] = 1; mapa[pozx][pozy][1] = 0; mapa[pozx][pozy][2] = 1; pozy++; }
}