好吧..我重写了它,但我仍然遇到random.choice的问题 我知道它试图做什么,我确实希望radom.choice在精灵离开屏幕时重置;但它不是随机的......
class Planets(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
imageFiles = ["planet_{}.gif".format(num) for num in range (1,4)]
for files in imageFiles:
self.image = pygame.image.load(files)
self.image.convert()
self.rect = self.image.get_rect()
self.x = 700
self.y = 50
self.dx = -5
def update(self):
self.rect.center = (self.x, self.y)
self.x += self.dx
if self.x <= -800:
self.reset()
def reset(self):
self.x = 800
self.image = random.choice(files)
self.y = random.randrange(0, screen.get_height())
答案 0 :(得分:1)
我会这样做:
files = ["planet_{}.gif".format(num) for num in range (1,4)]
for filename in files:
f = open (filename) .... and so on
当你有所有图像的列表时
image_to_display = random.choice (image_list)
答案 1 :(得分:1)
此代码:
for files in imageFiles:
self.image = pygame.image.load(files)
将一张图片加载到self.image
,然后将其替换为其他图片。我不知道你的意图,但这个循环没有做任何有用的事情。
此代码:self.image = random.choice(files)
- 应该完全失败,因为该函数中不存在files
。即使它以某种方式引用init函数中的files变量,它只是一个字符串,因此self.image最终会成为1个字符,而不是实际的图像。
我会尝试这样的事情(遗漏了一些代码):
(in __init__)
self.files = []
for files in imageFiles:
self.files.append(pygame.image.load(files))
for img in self.files:
img.convert()
self.reset()
(in reset)
self.image = random.choice(self.files)
self.rect = self.image.get_rect()