【发布时间】:2014-07-15 14:41:00
【问题描述】:
我在按程序中的 D 键时遇到了一些问题。我会展示然后解释。 (无关的省略)
main.py
while True:
process(Cursor,movie,music)
Effects.List.draw(screen)
pygame.display.flip()
类.py
class BaseClass(pygame.sprite.Sprite):
allsprites = pygame.sprite.Group()
def __init__(self,x,y,image_string):
pygame.sprite.Sprite.__init__(self)
BaseClass.allsprites.add(self)
self.image = pygame.image.load(image_string)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def destroy(self, ClassName):
ClassName.List.remove(self)
BaseClass.allsprites.remove(self)
del self
class Effects(BaseClass):
List = pygame.sprite.Group()
def __init__(self,x,y,image_string):
BaseClass.__init__(self,x,y,image_string)
Effects.List.add(self)
进程.py
def process(Cursor,movie,music):
for event in pygame.event.get():
Stage = True
Stage2 = False
keys = pygame.key.get_pressed()
if Stage:
if Cursor.rect.collidepoint(370,340): #Start
if keys[pygame.K_RETURN]:
Stage2 = True
if Stage2:
Stage = False
hitkeys = HitKeys(65,600,"Images/Hit Keys.png") #520
lane = KeyLane(50,0,"Images/4k lane.png")
movie.play()
pygame.mixer.music.play()
if keys[pygame.K_d]:
effect1 = Effects(55,0,"Images/Effect.png")
我没有编程经验,所以我实现我想要的方法非常迂回。如您所见,我希望Effect.png 在我按 D 时出现,但仅在 Stage2 期间出现。它只是不会发生。如果我将它的一部分削去它会起作用,但这意味着它会出现在Stage 期间。不是我想要的。
如果您能帮我确定为什么它没有出现在 Stage2 中,我们将不胜感激。
【问题讨论】:
-
在某些地方添加
print- 例如在if key之前和if key内部以查看发生了什么。您可以在几个地方打印 Effects.List 以查看是否有预期的元素。 -
如果您不使用 IDE,我也很幸运能够使用 PDB module 逐步执行代码。