大家好,我想知道我是否可以得到一些帮助。我在python中学习了类,并试图将它合并到我当前的uni项目中。
以下是该类的代码以及它使用的一些变量
class Asteroid():
def __init__(self, char, startX, startY):
self.char = char
self.startX = startX
self.startY = startY
self.drawChar()
def drawChar (self):
self.space = pygame.image.load (self.char)
self.space = self.space.convert_alpha()
gameDisplay.blit(self.space,
(random.randint(0,display_width),
random.randint(0,display_height)))
这个类基本上包含了我需要加载的所有数据' Asteroids'。
下面的是实际使用该类的主代码的一部分:
Asteroid(random.choice(asteroid),200,300 )
以下是变量asteroid
的代码:
asteroid = [
'Sprites/Asteroid1.png',
'Sprites/Asteroid2.png',
'Sprites/Asteroid3.png']
所以出现的实际问题是,当我运行代码时,小行星会被打到表面,但是它们会在整个地方跳跃。不仅如此,而且不同的小行星正在被击中,而不是一颗被选中的小行星。为什么会这样?
另一方面,小行星也有白色背景,我尝试转换它们,但这并没有帮助。
答案 0 :(得分:1)
因为你告诉它。代码
gameDisplay.blit(self.space,
(random.randint(0,display_width),
random.randint(0,display_height)))
字面上说“在随机位置将图像显示在显示屏上”。具体来说,random.randint(0,...)
选择从零到屏幕大小的随机位置。
请记住,每次需要更新屏幕时都会调用此显示代码,而不仅仅是在您启动游戏时。要以静态坐标显示,请将坐标设为静态:
gameDisplay.blit(self.space, (self.startX, self.startY))