除非先拍摄,否则我无法移动精灵?

我正在开发一个基本的游戏,您可以在其中移动并发射弹丸以杀死随机产生的敌人,但是如果我启动游戏并尝试先移动然后再执行其他操作,则游戏将崩溃。但是,如果我先射击弹丸,游戏将运行完美,我可以毫无问题地四处走动,但是我似乎无法弄清楚为什么会这样。



回首忆惘然
浏览 122回答 1
1回答

Qyouu

这是因为您的if / elif / else逻辑有些混乱。您有KEYDOWN事件的两个路径。如果第一个事件恰好是移动命令,则您的代码将首先运行弹丸代码(没有找到有效的弹丸命令),然后尝试引用不存在的弹丸对象。尝试以下方法:#---------- MAIN PROGRAM LOOP ----------#while not done:# --- Event processing     for event in pygame.event.get():        if event.type == pygame.QUIT:            done = True        elif event.type == pygame.KEYDOWN:            projectile = None  # initialize             if event.key == pygame.K_UP:                projectile = ProjectileUp("LightningUp.png")                projectile.rect.x = player.rect.x+65                projectile.rect.y = player.rect.y            elif event.key == pygame.K_DOWN:                projectile = ProjectileDown("LightningDown.png")                projectile.rect.x = player.rect.x+65                projectile.rect.y = player.rect.y+100            elif event.key == pygame.K_LEFT:                projectile = ProjectileLeft("LightningLeft.png")                projectile.rect.x = player.rect.x+35                projectile.rect.y = player.rect.y+100            elif event.key == pygame.K_RIGHT:                projectile = ProjectileRight("LightningRight.png")                projectile.rect.x = player.rect.x+115                projectile.rect.y = player.rect.y+100
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python