The issue is with the indentation of your game loop, the if statements checking the player's movement are outside the while True loop, so they only run once.