This is my main game loop:
while (running) {
SDL_PollEvent(&event);
if (event.type == SDL_QUIT) {
SDL_Quit();
return 0;
}
if (event.type == SDL_KEYDOWN) {
switch (event.key.keysym.sym) {
case SDLK_LEFT:
player.vx = -1;
break;
case SDLK_RIGHT:
player.vx = 1;
break;
case SDLK_DOWN:
player.vy = 1;
break;
case SDLK_UP:
player.vy = -1;
break;
case SDLK_ESCAPE:
SDL_Quit();
return 0;
break;
}
}
player.draw(screen);
SDL_Flip(screen);
clear_screen(screen);
}
I have that, but I also tried to add a (if event.type == SDL_KEYUP), and then for cases UP and DOWN, set vy = 0, RIGHT and LEFT, set vx = 0. However, that didn't work so well either. I also tried using both SDL_PollEvent(&event); and while (SDL_PollEvent(&event)) {}.
I tried combinations of those too, and I'm updating "player.x += player.vx", and "player.y += player.vy;", but I just can't get proper diagonal movement.
Any idea of what I can try? Thank you in advance!






