Przepraszam za temat ale ciężko mi to jakoś nazwać. Napisalem grę typu Snake pod consola w win xp. Problem mój polega na tym że gdy szybko zawróce to wąż zamiast zawrócić tak jak to powinno byc zawraca w miejscu tak że głowa wjeżdża na ciało węża. Nie wiem też jaki fragmęt kodu zamieścić bo jest on dość obszerny więc zamieszczam to co najważniejsze chyba. Oczywiście chciał bym tak zrobić by taka sytuacja nie mogła zaistnieć ale raczej nie kosztem czegoś.
put_food();
draw_board();
do
{
znak = 0;
while ( !kbhit() )
{
end = GetTime() + ms1/(speed * 100);
move(); // zmiana wspolrzednych weza zaleznie od kierunku
check_colision(); // sprawdzenie kolizji
draw_food(); // rysowanie jedzenia
draw_snake() // rysowanie weza
if ( G_State == GS_OVER ) return points; // check_colision modyfikuje G_State
points += map_event(); // obsluga zdarzen na mapie i zsumowanie z nich pkt
gotoxy(80,24);
waitms(ms1/speed, true);
}
if ( G_State == GS_OVER ) return points;
if( !Obsluz_zdarzenie( znak = getch(), points ) ) return -1; // obsluga wcisnietego klawisza
// czyli przypisanie odpowiednich wspolrzednych glowie
tm_left = 50 * (end - GetTime());
if ( tm_left > 0 ) waitms( tm_left, false); // doczekanie do czasu end
}while (1);
Jeżeli mam coś jeszcze zamieścić piszcie.
Szukałem troche samemu ale nie znalazłem węża napisanego w c++ który nie ma tego błędu.