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

当我使用 PyGame 死亡时,除了箭头键之外的所有键都不起作用

当我使用 PyGame 死亡时,除了箭头键之外的所有键都不起作用

拉莫斯之舞 2024-01-15 17:12:11
我正在使用“ pygame ”在Python中开发基本游戏“Snake ”。当我一开始四处走动并且还活着时,我的箭头键工作正常。当我死后,我将无法使用任何键,也无法通过按窗口右上角的X按钮来关闭窗口。终止它的唯一方法是按Ctrl-x控制台,这样它就不会关闭。当我调试它时,我的控制台显示 myq和cvalue 是59,248因此 pygame. K_q并且pygame.K_c有价值观113,99.有人知道原因吗?我死后的代码如下:            while game_close == True:            self.dis.fill(colors("blue"))            self.message("You Lost! Press C-Play Again or Q-Quit", colors("red"))            self.Your_score(Length_of_snake - 1)            pygame.display.update()            for event in pygame.event.get():                if event.type == pygame.KEYDOWN:                    if event.key == pygame.K_q:                        game_over = True                        game_close = False                    elif event.key == pygame.K_c:                        game_close = False                        self.gameLoop()           如果有人知道为什么会发生这种情况,那将会很有用。这是我第一次写任何任务,很抱歉没有最好的描述或有任何重复(我已经搜索并发现没有任何适合我的东西)
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

我无法完全回答你的问题,因为很高兴看到整个代码,但我肯定会将其更改为:


        while game_close:

            self.dis.fill(colors("blue"))

            self.message("You Lost! Press C-Play Again or Q-Quit", colors("red"))

            self.Your_score(Length_of_snake - 1)

            pygame.display.update()

            for event in pygame.event.get():

                if event.type == pygame.QUIT:

                    game_close = True

                    game_over = True

                    # exit()

            keys = pygame.key.get_pressed()

            if keys[pygame.K_q]:

                game_over = True

                game_close = False

            if keys[pygame.K_c]:

                game_close = False

                self.gameLoop()


查看完整回答
反对 回复 2024-01-15
?
GCT1015

TA贡献1827条经验 获得超4个赞

未包含整个代码,缺少一个类,并且未定义一些方法。但首先我建议将所有按键更改为:


keys = pygame.key.get_pressed()

if keys[pygame.K_yourkey]:

    # do something

if keys[pygame.K_yourotherkey]:

    # do something

# and so on

并且不要将其放入事件 for 循环中


查看完整回答
反对 回复 2024-01-15
?
喵喔喔

TA贡献1735条经验 获得超5个赞

尝试改成这样


           for event in pygame.event.get():

                if event.type == pygame.KEYUP:

                    if event.key == pygame.K_q:

                        game_over = True

                        game_close = False

                    elif event.key == pygame.K_c:

                        game_close = False

                        self.gameLoop()


查看完整回答
反对 回复 2024-01-15
  • 3 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

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