здравствуйте, я пишу змейку на python, с помощью pygame.get.event() но она не двигается

if event.type == pygame.KEY_D and dirs["w"]:
  if event.key == pygame.K_w:
    dx, dy = 0, -1 
    dirs = {"w": True,"s": True,"a": False,"d": True, }
  if event.key == pygame.K_s and dirs["s"]:
       dx, dy = 0, 1
       dirs = {"w": False,"s": True,"a": True,"d": True, }
  if event.key == pygame.K_a and dirs["a"]:
      dx, dy = -1, 0
      dirs = {"w": True,"s": True,"a": True,"d": False, }
  if event.key == pygame.K_d and dirs["d"]:
      dx, dy = 1, 0
      dirs = {"w": True,"s": True,"a": False,"d": True, }

dx - направление движения по X dy - направление движения по Y

я нажимаю на клавиши но змея не двигается. я пробовал писать с помощью "key = pygame.key.get_pressed()" но змея почти не реагировала.


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

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

я нажимаю на клавиши но змея не двигается.

В данных строках dx, dy = 0, 1 вы присваиваете значение числа, но при последующих обработках в условии к переменной будет присваиваться то же значение. Поэтому вам необходимо именно увеличивать или уменьшать значение переменной. Например, dx, dy = 0, 1 - > dy += 1.

Ещё, я бы посоветовал использовать конструкцию if elif else, вместо if if else, тем самым у каждого условия будет цепь значений 'иначе, если', где в конце цепи условий будет одно 'иначе'.

→ Ссылка