尝试在pygame中创建一个切换类型的按钮。有问题的

2024-09-29 22:35:09 发布

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

好的,这里的问题是,在恢复单击时,第一个条件满足,变量设置为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

Tags: andineventfalsetrueforgetif
1条回答
网友
1楼 · 发布于 2024-09-29 22:35:09

使用elif语句。elif表示“else if”。如果第一个条件被证明是真的,那么你的第二个条件根本就不会被测试,那么你就不会有这个问题了。在

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,那么它只有一个可能的布尔值,False!因此,第二个条件不需要测试,您只需使用一个简单的else语句,根本不需要任何条件。当您不带条件地使用else语句时,如果前一条ifelif语句为False,则该语句后面的代码块将立即执行。请参见以下代码简化:

^{pr2}$

正如@Paulo在评论中指出的,你可以做进一步的简化。因为如果条件x >= 25 and x <= 175 and y >= 350 and y<= 450恰好为真,那么您所要做的就是翻转TutorialOn的布尔值,所以您可以使用一个简单的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

相关问题 更多 >

    热门问题