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



我对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)

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

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

最新更新