Я пытаюсь создать спрайт, который движется вниз с постоянной скоростью, используя pygame и random. Но, к сожалению, спрайт просто остается на одном месте. Проблема заключается в методе itemMover (). Он не обновляет значение атрибута для экземпляра (debris1, внизу), поэтому каждый раз, сразу после того, как значение y увеличивается на значение скорости, оно сбрасывается до исходного значения ... что приводит к тому, что спрайт просто тупик. Я не знаю, почему он не обновляет атрибут.
import pygame
import random
# variables
mainWindow = pygame.display.set_mode((800, 600))
posX = random.randint(0,800)
posY = 0
#speedXRight = 0.5
#speedXLeft = -0.5
# images
sprite = pygame.image.load("rockred.png")
xval = random.randint(50, 750)
ypos = 0
yspeed = 0.5
class item:
def __init__(self, xpos, ypos, yspeed):
self.xpos = xpos
self.ypos = ypos
self.yspeed = yspeed
# below method not working as intended
def itemMover(self, win, val):
############HELP HERE
print(self.ypos)
self.ypos += self.yspeed
############HELP HERE
print(self.xpos, self.ypos)
win.blit(val, (self.xpos, self.ypos))
mainLoop = True
while mainLoop:
for event in pygame.event.get():
if event.type == pygame.QUIT:
mainLoop = False
#keycode.Main = False
debris1 = item(xval, 0, 0.5)
debris1.itemMover(mainWindow, sprite)
pygame.display.update()
вывод:
0
167 0.5
0
167 0.5
0
167 0.5
0
167 0.5
0
167 0.5
0
167 0.5
0
167 0.5
0
167 0.5
также окно со спрайтом, который остается неподвижным.