Keydown в Pygame не работает - PullRequest
0 голосов
/ 29 июня 2018

У меня есть программа, основанная на pygame, которая создает экран, и каждый раз, когда вы нажимаете клавишу «Пробел» или «Enter», он печатает одну из строк в списке. Также у него есть игровое меню, которое вы можете открыть, нажав «Esc», но по какой-то причине, которое я не могу понять, когда нажимаю «Esc», x суммирует и печатает строки, когда это не предполагается. Может ли кто-нибудь помочь мне решить эту проблему?

Это мой код:

import pygame
import sys

pygame.init()

screenSize = (1000, 600)
fullscreen = 0

gameDisplay = pygame.display.set_mode(screenSize, fullscreen)
clock = pygame.time.Clock()

black = (0, 0, 0)
purple = (174, 55, 174)

strings = ['string1', 'string2', 'string3', 'string4', 'string5']


def scenemanager(x=0):
    gameDisplay.fill(black)
    while x <= len(strings):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit(), sys.exit(), quit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    ingame_menu()
                if event.key == pygame.K_SPACE or pygame.K_KP_ENTER:
                    if x <= len(strings)-1:
                        print(strings[x])
                        gameDisplay.fill(black)
                    x += 1
        pygame.display.update()
        clock.tick(60)


def ingame_menu():
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit(), sys.exit(), quit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    return False

        gameDisplay.fill(purple)
        pygame.display.update()
        clock.tick(60)

scenemanager()
...