使用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
碰巧不是真的,那么它只有一个可能的布尔值,假!因此,不需要测试第二个条件,您可以使用else
完全没有条件的简单语句。当您使用不带条件的语句时,如果前面的or语句结果为 False 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
条件是否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