为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

这是因为您的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


查看完整回答
反对 回复 2021-04-20
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信