Я разрабатываю небольшую игру на микропроцессоре, и я пытаюсь получить функцию, которая изменяет направление, на которое спрайт перемещается на 90 градусов либо влево, либо вправо в зависимости от нажатия левой кнопки или нажатия правой кнопки.Изменение направления движущегося спрайта на 90 градусов при нажатии кнопки нажимает странно
В настоящее время это мой код. для изменения направления, не выполняет точно заданную задачу.
void change_direction(Sprite * sprite) {
sprite->x += sprite->dx;//these two lines basically tell the sprite to move in whatever direction the button presses tell it to. by default it moves in a straight line in a northern direction.
sprite->y += sprite->dy;
if (pressed(SW1)) {
sprite->dx = (sprite->dy) ? -sprite->dy : 1;//this code is very broken, what it does is it moves it either diagonally upwards, or right. it should turn the sprite 90 degrees left everytime the switch is pressed.
sprite->dy = (sprite->dy) ? 0 : -sprite->dx;
}
else if(pressed(SW0)) {//this code turns the sprite right once from the default direction, but not again. what is should do is turn the sprite 90 degrees everytime.
sprite->dx = -1;
sprite->dy = 0;
}
}
У меня было представление о том, как подойти к этому; нажатие на переключатель не изменяет новое направление, изменяя значения dx dy локально, но вместо этого увеличивает или уменьшает целое число, которое управляет направлением. Я не знаю, как бы реализовать такую вещь.
Привет извини, я нарисовал картинку, чтобы описать желаемое движение спрайта, потому что моя формулировка была странной. Он должен меняться на 90 градусов каждый раз. http://imgur.com/1Wi3RjP Joachim; да, потому что он всегда движется. LP; действительно? x, y - это просто местоположение, а dx/dy - направление, в которое оно направляется. –