Как зарегистрировать только один щелчок мыши в Pygame? - PullRequest
0 голосов
/ 07 апреля 2020

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

Код ниже. Часть, которую я хотел исправить, находится в конце.

displayrolldice = False
turntaken = False


def displaydice1():
    if displayrolldice is True and randomnumber == 1:
        screen.blit(dice1, (166, 505))
        turntaken = True
        if turntaken is True:
            red.turnstaken += 1


def displaydice2():
    if displayrolldice is True and randomnumber == 2:
        screen.blit(dice2, (166, 505))
        turntaken = True
        if turntaken is True:
            red.turnstaken += 1


def displaydice3():
    if displayrolldice is True and randomnumber == 3:
        screen.blit(dice3, (166, 505))
        turntaken = True
        if turntaken is True:
            red.turnstaken += 1


def displaydice4():
    if displayrolldice is True and randomnumber == 4:
        screen.blit(dice4, (166, 505))
        turntaken = True
        if turntaken is True:
            red.turnstaken += 1


def displaydice5():
    if displayrolldice is True and randomnumber == 5:
        screen.blit(dice5, (166, 505))
        turntaken = True
        if turntaken is True:
            red.turnstaken += 1


def displaydice6():
    if displayrolldice is True and randomnumber == 6:
        screen.blit(dice6, (166, 505))
        turntaken = True
        if turntaken is True:
            red.turnstaken += 1


# gameloop ZARURI
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    displayludoboard()
    displaydicecontainer()
    displaydicenormal()
    displayredplayertoken(redtoken1x, redtoken1y)

    # roll dice boii
    mousecor = pygame.mouse.get_pos()
    mouseXcor = mousecor[0]
    mouseYcor = mousecor[1]

    if event.type == pygame.MOUSEBUTTONDOWN and 164 < mouseXcor < 221 and 506 < mouseYcor < 560:
        displayrolldice = True
        print(red.turnstaken)

1 Ответ

0 голосов
/ 07 апреля 2020

Поместите здесь выражение if:

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

        # roll dice boii
        mousecor = pygame.mouse.get_pos()
        mouseXcor = mousecor[0]
        mouseYcor = mousecor[1]

        if event.type == pygame.MOUSEBUTTONDOWN and 164 < mouseXcor < 221 and 506 < mouseYcor < 560:
            displayrolldice = True
            print(red.turnstaken)

    displayludoboard()
    displaydicecontainer()
    displaydicenormal()
    displayredplayertoken(redtoken1x, redtoken1y)

Таким образом, событие вызывается один раз для каждого щелчка мыши.

...