Почему в pygame змейка двигается не по горизонтали, а по диагонали?

Я сделал змейку по видео и у меня она двигается неправильно. Как решить проблему?

Код

import pygame

pygame.init()

width = 640
height = 480
display = pygame.display.set_mode((width, height))

pygame.display.update()
pygame.display.set_caption("Snake")

game_end = False

colors = {
  "snake_head": (0, 255, 0),
  "snake_tail": (0, 200, 0),
  "apple": (255, 0, 0)
}

snake_pos = {
  "x": width/2-5,
  "y": height/2-5,
  "x_change": 0,
  "y_change": 0
}

snake_speed = 10

snake_size = (10, 10)

while not game_end:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      game_end = True

    elif event.type == pygame.KEYDOWN:
      if event.key == pygame.K_LEFT:
        snake_pos["x_change"] = -snake_speed
        snake_pos["y_change"] = 0

      elif event.key == pygame.K_RIGHT:
        snake_pos["x_change"] = snake_speed
        snake_pos["y_change"] = 0

      elif event.key == pygame.K_UP:
        snake_pos["x_change"] = 0
        snake_pos["y_change"] = -snake_speed

      elif event.key == pygame.K_DOWN:
        snake_pos["x_change"] = 0
        snake_pos["y_change"] = snake_speed

  snake_pos["x"] += snake_pos["x_change"]
  snake_pos["y"] += snake_pos["y_change"]

  pygame.draw.rect(display, colors["snake_head"], [
    snake_pos["y"],
    snake_pos["y"],
    snake_size[0],
    snake_size[1]])

  pygame.display.update()

pygame.quit()
quit()

Результат работы кода


Ответы (1 шт):

Автор решения: GameLinux

Для ограничения fps:

clock = pygame.time.Clock() - до основного цикла While,

clock.tick(12) - в конце тела цикла While

→ Ссылка