Hej , szczerze mówiąc natknąłem się na problem który sprawił że od jakiegoś czasu nie mogę się oderwać od kodu .
Mianowicie nie mam pojęcia dlaczego w mojej grze snake nastąpił taki problem że nie da się skręcić w prawo . Niezależnie czy użytkownik wybierze klawisz a czy d wąż zawsze pójdzie w lewo, wiem że problem wydaje się żenujący bo mogłem po prosu coś pomieszać w kierunkach ale naprawdę na wszystko patrzyłem i niem pojęcia gdzie jest ten błąd . Dodatkowo porównywałem kod ze wcześniejszymi wersjami tej gry które napisałem i wszystko się zgadza . Podałem pod spodem fragment kodu ,dziękuje za pomoc i proszę o wyrozumiałość jeżeli powód jest banalny .
void game::snake_control() //sterowanie wężykiem
{
char k = getch();
if(k=='A') k='a';
if(k=='D') k='d';
if(k=='W') k='w';
if(k=='S') k='s';
switch(k)
{
case 'a':
snake_direction=left;
break;
case 'd':
snake_direction=right;
break;
case 'w':
snake_direction=up;
break;
case 's':
snake_direction=down;
break;
}
}
void game::_left() //poszczególne funkcje odpowiadajace za ruch weza
{
obiect_position position;
position.x = snake[0].x;
position.y = snake[0].y-1;
snake.insert(snake.begin(), position);
snake.pop_back();
}
void game::_right()
{
obiect_position position;
position.x = snake[0].x;
position.y = snake[0].y+1;
snake.insert(snake.begin(), position);
snake.pop_back();
}
void game::_up()
{
obiect_position position;
position.x = snake[0].x-1;
position.y = snake[0].y;
snake.insert(snake.begin(), position);
snake.pop_back();
}
void game::_down()
{
obiect_position position;
position.x = snake[0].x+1;
position.y = snake[0].y;
snake.insert(snake.begin(), position);
snake.pop_back();
}
void game::snake_vector()
{
if(snake_direction==left) //jezeli kierunek jest lewo
{
if(last_snake_direction==right)//zabezpieczenie programu jezeli gracz proboje cofac wezem
{
_right();
}
else //jezeli wszystko przebieglo ok
{
last_snake_direction==left; //ustawiamy zmienna z zeszlym kierunkiem na lewo by wykonac przy kolejnej iteracji petli gry porownania czy gracz nie proboje cofac ...
_left();
}
}
else if(snake_direction==right) //taki sam wzor
{
if(last_snake_direction==left)
{
_left();
}
else
{
last_snake_direction==right;
_right();
}
}
else if(snake_direction==up)
{
if(last_snake_direction==down)
{
_down();
}
else
{
last_snake_direction==up;
_up();
}
}
else if(snake_direction==down)
{
if(last_snake_direction==up)
{
_up();
}
else
{
last_snake_direction==down;
_down();
}
}
}
jak potrzebujecie cały kod to piszcie ,jeszcze raz dziękuje za pomoc