Вы не блеете изображение правильно. Давайте посмотрим на эту функцию:
def virus(x_virus,y_virus):
screen.blit(virus_pic, (x_virus, y_virus))
Вы берете координаты x и y и пытаетесь перевести virus_pic
в screen
. дело в том, что вы не учитываете другую область видимости, вам нужно передать screen
и virus_pic
в качестве параметров, иначе ваша функция не будет знать, что они из себя представляют, поэтому измените вашу функцию так, чтобы она выглядела следующим образом
def virus(screen,virus_pic,x_virus,y_virus):
screen.blit(virus_pic, (x_virus, y_virus))
, а затем измените соответствующий раздел кода в функции main()
. Я позволил себе немного упростить его
if x_virus != 320:
x_virus += 1
if x_virus == 320:
if y_virus != 400:
y_virus += 1
if y_virus == 400:
if x_virus != 500:
x_virus += .5
if x_virus == 500:
if y_virus != 10:
y_virus -= 1
virus(screen,virus_pic,x_virus,y_virus)
Дайте мне знать, как это происходит!
EDIT:
Причина, по которой он не меняет направление, заключается в том, что в каждом кадре его координаты изменяются только на одни и те же точные значения каждый раз, поэтому вектор скорости остается неизменным, и вы видите движение только в одном направлении.
Вам нужно найти способ сделать эти изменения динамичными.