Pygame功能在按下5次“是”后停止

时间:2019-03-01 17:51:02

标签: python while-loop keyboard pygame

我正在努力的是得到一个pygame程序以在上一个功能中按5次“ y”键后停止我的功能。

我正在pygame中创建一个程序,用于与参与者进行研究。我创建了一个在屏幕上显示一个句子的函数,每个句子取自数据框中的一行。根据给定的参与者,该句子是否正确,将按下“ y”或“ n”键并将其记录在数据框中的新列中。

现在,我的功能是遍历数据框中的所有100个句子。我希望在按下“ y”键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()

我试图去this Question about while-for loops 并且一直没有成功。有人可以让我知道在我按5次“是”按钮后要停止的程序时在语法上缺少什么吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

在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)