如何在Pygame中只注册一次鼠标点击?

2024-09-30 14:21:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Pygame和Python本身都是新手,目前正在尝试制作一个游戏,但我被卡住了。我希望当我点击鼠标按钮时,某个变量的值增加1,但当我检查是否发生这种情况时,它会记录几次点击

代码如下。我想修复的部分在最后

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)

Tags: andeventfalsetrueifisdefred
1条回答
网友
1楼 · 发布于 2024-09-30 14:21:54

将您的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)

这样,每次鼠标单击都会触发一次事件

相关问题 更多 >