Остановка функции Pygame после 5 нажатий "да" - PullRequest
0 голосов
/ 01 марта 2019

Я борюсь с тем, чтобы программа pygame остановила мою функцию после 5 нажатий клавиши «y» в предыдущей функции.

Я создаю программу в Pygame для исследования с участниками.Я создал функцию, которая отображает предложение на экране, каждое предложение берется из строки в кадре данных.Независимо от того, является ли это предложение верным или нет в соответствии с данным участником, будет нажата клавиша «y» или «n», и она будет записана в новый столбец в кадре данных.

Прямо сейчас моя функция перебирает все 100 предложений в кадре данных.Я хотел бы прекратить итерации после нажатия клавиши «у» 5 раз.

При получении ответа от клавиатуры я написал:

def getResponse(trialNum):
    while True:
        sentence = pygame.event.wait()
        if sentence.type == pygame.QUIT:
            self.gameExit = True
        if sentence.type == pygame.KEYDOWN:
            if sentence.key == pygame.K_y:
                keyname = 'yes'
                **yesCount = len(pygame.key.get_pressed())
                break
            if sentence.key == pygame.K_n:
                keyname = 'no'
                break
        screen.fill((white))

Строка со звездочкой (*) указывает на мою попытку подсчитать, сколько раз клавиша "y" имелабыла нажата, на что я надеялся обратиться в следующей функции:

Запуск программы:

def start():
    screen.fill(white)
    # trials loop
    start_val = 0
    stop_val = 5
        while start_val < stop_val:
                for trial in range(0,numEvents): #specifies number of events
        showOneEvent(trial)
    end()

Я попытался перейти к этого вопроса о циклах while-for и не увенчались успехом.Может кто-нибудь, пожалуйста, дайте мне знать, что мне не хватает синтаксически при определении остановки программы после того, как я нажал кнопку «да» 5 раз?

Спасибо.

1 Ответ

0 голосов
/ 01 марта 2019

Внутри цикла while попробуйте добавить оператор break для выхода из цикла.

while start_val < stop_val:
            for trial in range(0,numEvents): #specifies number of events
            if (yesCount == 5)
                 break;
showOneEvent(trial)

Вы также можете попробовать добавить к своему start_val, поскольку вы не используете его повторно.

while start_val < stop_val:
                for trial in range(0,numEvents): #specifies number of events
                     start_val = start_val + 1
showOneEvent(trial)
...