currently, i’m using all four keys to steer the snake left, right, up and down. I’m wondering how can i only use left and right key to move the snake around.
if event.key == pygame.K_LEFT: snake.direction = 2 elif event.key == pygame.K_RIGHT: snake.direction = 3 elif event.key == pygame.K_UP: snake.direction = 0 elif event.key == pygame.K_DOWN: snake.direction = 1 def move(self): if self.direction is 0: self.dy = -self.block self.dx = 0 if self.direction is 1: self.dy = self.block self.dx = 0 if self.direction is 2: self.dy = 0 self.dx = -self.block if self.direction is 3: self.dy = 0 self.dx = self.block self.x += self.dx self.y += self.dy
can anyone guide me how to do that?
Advertisement
Answer
Define the directions as follows:
- 0: move up
- 1: move right
- 2: move down
- 3: move right
def move(self): if self.direction is 0: self.dy = -self.block self.dx = 0 if self.direction is 1: self.dy = 0 self.dx = self.block if self.direction is 2: self.dy = 0 self.dx = -self.block if self.direction is 3: self.dy = self.block self.dx = 0 self.x += self.dx self.y += self.dy
When right is pressed then add 1 to snake.direction
and when left is pressed the subtract 1. Use the %
(modulo) operator (see Binary arithmetic operations) to ensure tha the result is in rage [0, 3]:
if event.key == pygame.K_LEFT: snake.direction = (snake.direction - 1) % 4 if event.key == pygame.K_RIGHT: snake.direction = (snake.direction + 1) % 4