Witam.
Mam mały problem z prawidłowym napisaniem sterowania w grze konsolowej w snake wykorzystującej ascii.
Gra działa na tej zasadzie że w momencie ruchu na danych współrzędnych jest wstawiany znak z tablicy ascii.
Chodzi o to że jeżeli zaraz po zmianie kierunku zostanie od razu jeszcze raz zmieniony kierunek to nie wykonuje się od razu przez co nie można skręcić przy samym ogonie węża.
Dzieje się coś takiego jak na grafice po lewej a powinno tak jak po prawej.
Fragment kodu odpowiedzialny za sterowanie:
if (kbhit()){
switch(getch()){
case 0:{
case 77: if (kierunek!=1) kierunek=0; break;//prawo
case 75: if (kierunek!=0) kierunek=1; break;//lewo
case 72: if (kierunek!=3) kierunek=2; break;//gora
case 80: if (kierunek!=2) kierunek=3; break;//dol
}break;
}//switch
}//if (kbhit())
switch(kierunek){
case 0: x=x+2; break;//prawo
case 1: x=x-2; break;//lewo
case 2: y=y-1; break;//gora
case 3: y=y+1; break;//dol
}
Cały kod programu: https://github.com/stanik120/CPP/blob/master/snake/main.cpp