Ограничьте количество нажатий клавиши в pygame - PullRequest
1 голос
/ 13 июля 2020

Я делаю простую игру в кости с помощью pygame и пытаюсь разрешить нажатие клавиши пробела не более 5 раз, пока игра не будет завершена и не будут представлены результаты. Это фрагмент моего кода:

...

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        run = False

    for i in range (5): #number of wanted rounds
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                dice1.roll = True #rolls dice
                dice2.roll = True #rolls dice
                player_one.new_score(dice1_set) #calculates P1 new score
                player_two.new_score(dice2_set) #calculates P2 new score

Тем не менее, это все еще позволяет нажимать клавишу пробела любое количество раз, и d ie все равно будет катиться при каждом нажатии. Как мне убедиться, что после пятикратного нажатия клавиши пробела повторное нажатие не приведет к повторному запуску d ie, и вместо этого я могу начать печатать оценки et c?

Спасибо ты!

1 Ответ

0 голосов
/ 13 июля 2020

Вам нужен какой-то счетчик или флаг, чтобы знать, когда прекращать бросание кубиков или вообще запускать или останавливать какое-то действие. Что-то вроде этого работает:

if event.type == pg.KEYDOWN:
    if event.key == pg.K_SPACE and SPACE_COUNTER < 5:
        SPACE_COUNTER +=1

    else:
        print("PUT YOUR CODE FOR SCORE RESET")

    if event.key == pg.K_RETURN and SPACE_COUNTER >= 5:
        SPACE_COUNTER = 0

Я предполагаю, что все это происходит внутри вашего main_loop, поэтому SPACE_COUNTER является глобальной переменной и определяется как SPACE_COUNTER = 0 вне l oop. Последняя строка предназначена для перезапуска переменной, когда вы нажимаете Enter и счетчик уже на 5, он сбрасывает его на 0. Вы также можете сделать отдельную функцию только для подсчета. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...