Я могу идеально перемещать квадрат влево и вверх (оба значения являются отрицательными), но перемещение вправо или вниз становится случайным и неудобным. Вот фрагмент кода:
// Move the square based on key states
float dx = 0, dy = 0;
if (keys[0]) dy = -1; // Move up
if (keys[1]) dy = 1; // Move down
if (keys[2]) dx = -1; // Move left
if (keys[3]) dx = 1; // Move right
Я ожидаю, что квадрат сможет двигаться влево, вправо, вниз, вверх и по диагонали.
Вот мой метод перемещения:
void move(float dx, float dy, float deltaTime) {
x += dx * deltaTime; // Movement based on delta time
y += dy * deltaTime;
printf("Position: x = %d, y = %d\n", x, y);
if (x < 0) x = 0;
if (y < 0) y = 0;
if (x + size > SCREEN_WIDTH) x = SCREEN_WIDTH - size;
if (y + size > SCREEN_HEIGHT) y = SCREEN_HEIGHT - size;
Подробнее здесь: https://stackoverflow.com/questions/790 ... -using-sdl