Используйте заявление 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
не соответствует действительности, то для него есть только одно другое логическое значение: False! Поэтому второе условие не нужно тестировать, и вы можете просто использовать простой оператор else
без каких-либо условий. Когда вы используете оператор else
без каких-либо условий, блок кода, который следует за ним, немедленно выполнится, если предыдущий операторили 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
Вау я чувствую себя немым. Благодарю. –
Это может быть дополнительно упрощено: 'if 25 <= x <= 175 и 350 <= y <= 450: tutorialOn = not tutorialOn'. Но мне нравится ваш ответ, потому что я полагаю, что «elif» и «else» - самые полезные уроки здесь. –
@PauloAlmeida Yup, можно использовать булевский переключатель. Очень хорошая точка. – Shashank