Актуальные проблемы с клавишами Pygame - PullRequest
1 голос
/ 24 октября 2019

Я пытаюсь создать небольшую маленькую игру для себя, чтобы, среди прочего, практиковать ООП. Однако я заметил, что когда я нажимаю клавишу, она действует так, как будто я нажимал ее несколько раз. Теперь я знаю, что могу использовать функцию события (event.type == pygame.KEYDOWN), я хочу выяснить, что было не так в том, что я написал.

Я изучил этот маленький метод цикла, чтобы создатьзадержка между нажатиями клавиш, если, скажем, вы что-то снимали и тогда работали должным образом. Я сравнил его с предыдущим кодом, но не могу понять, где я ошибся.

inDelay = 0

#indent caused because it is in my mainloop
    if inDelay > 0:
        inDelay += 1
    elif inDelay > 6:
        inDelay = 0

#also main loop
    if (keys[pygame.K_RIGHT] or keys[pygame.K_d]) and inDelay == 0:

        if arrowS.x == 163:
            arrowS.x = 413                   
        elif arrowS.x == 413:
            arrowS.x = 663
        elif arrowS.x == 663:
            arrowS.x = 163

    inDelay = 1

Я могу нажать клавишу один раз, и моя стрелка переместится туда, куда я хочу, простохорошо, но я не получаю ответ, когда нажимаю второй раз. Я пробовал делать отступ inDelay = 1 под каждым движением, но это тоже не получается.

1 Ответ

1 голос
/ 24 октября 2019
if inDelay > 0:
    inDelay += 1
    if inDelay > 100:
        inDelay = 0

Это работает так, как я хочу;цикл кажется немного непрактичным, хотя, поскольку мне нужно увеличить сумму, я, скорее всего, буду использовать pygame.time, как было указано.

...