猿问

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

我正在使用“ pygame ”在Python中开发基本游戏“Snake ”。当我一开始四处走动并且还活着时,我的箭头键工作正常。当我死后,我将无法使用任何键,也无法通过按窗口右上角的X按钮来关闭窗口。终止它的唯一方法是按Ctrl-x控制台,这样它就不会关闭。

当我调试它时,我的控制台显示 myqcvalue 是59248因此 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()

           

如果有人知道为什么会发生这种情况,那将会很有用。这是我第一次写任何任务,很抱歉没有最好的描述或有任何重复(我已经搜索并发现没有任何适合我的东西)


拉莫斯之舞
浏览 126回答 3
3回答

忽然笑

我无法完全回答你的问题,因为很高兴看到整个代码,但我肯定会将其更改为:        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()

GCT1015

未包含整个代码,缺少一个类,并且未定义一些方法。但首先我建议将所有按键更改为:keys = pygame.key.get_pressed()if keys[pygame.K_yourkey]:    # do somethingif keys[pygame.K_yourotherkey]:    # do something# and so on并且不要将其放入事件 for 循环中

喵喔喔

尝试改成这样           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()
随时随地看视频慕课网APP

相关分类

Python
我要回答