gpt4 book ai didi

python - 尝试在 pygame 中制作一个切换类型按钮。有问题

转载 作者:行者123 更新时间:2023-11-30 23:33:26 24 4
gpt4 key购买 nike

好吧,这里的问题是,恢复点击后,第一个条件得到满足,并且变量设置为 true。紧接着,事件就像......仍在继续或其他什么,并且变量为假满足第二个条件,该条件立即将变量重置为真。关于如何解决此类问题有什么想法吗?

    for event in pygame.event.get():    
if event.type == MOUSEBUTTONDOWN :
x, y = event.pos
if TutorialOn == True:
if x >= 25 and x <= 175 and y >= 350 and y<= 450:
TutorialOn = False
if TutorialOn == False:
if x >= 25 and x <= 175 and y >= 350 and y<= 450:
TutorialOn = True

最佳答案

使用 elif陈述。 elif意思是“否则如果”。如果第一个条件成立,那么您的第二个条件将根本不会被测试,那么您就不会遇到此问题。

for event in pygame.event.get():    
if event.type == MOUSEBUTTONDOWN :
x, y = event.pos
if TutorialOn == True:
if x >= 25 and x <= 175 and y >= 350 and y<= 450:
TutorialOn = False
elif TutorialOn == False:
if x >= 25 and x <= 175 and y >= 350 and y<= 450:
TutorialOn = True

另外,还有一点需要注意的是,你的逻辑还可以进一步简化。你不需要做if TutorialOn == True:if声明可以为你做到这一点。如果 TutorialOn碰巧不是 true,那么它就只有另一种可能的 bool 值,False!因此,第二个条件不需要测试,只需使用简单的else即可。完全没有任何条件的声明。当您使用else时没有条件的语句,如果前面的 if 则它后面的代码块将立即执行或elif事实证明该声明是错误的。请参阅以下代码简化版:

for event in pygame.event.get():    
if event.type == MOUSEBUTTONDOWN :
x, y = event.pos
if TutorialOn:
if x >= 25 and x <= 175 and y >= 350 and y<= 450:
TutorialOn = False
else:
if x >= 25 and x <= 175 and y >= 350 and y<= 450:
TutorialOn = True

正如 @Paulo 在评论中指出的那样,您可以进行进一步的简化。因为您所做的只是翻转 TutorialOn 的 bool 值如果条件x >= 25 and x <= 175 and y >= 350 and y<= 450恰好是这样,你可以使用一个简单的 not语句来“切换”它。

for event in pygame.event.get():    
if event.type == MOUSEBUTTONDOWN :
x, y = event.pos
if x >= 25 and x <= 175 and y >= 350 and y<= 450:
TutorialOn = not TutorialOn

关于python - 尝试在 pygame 中制作一个切换类型按钮。有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18807548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com