我正在用 python 3.8.3 制作一个 pygame 游戏,在我的游戏中我有一个开始屏幕,在这个 while 循环中:
def game_intro():
intro = True
mixer.music.load("musicIntro.mp3")
mixer.music.set_volume(0.02)
mixer.music.play(-1)
while intro:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
intro = False
screen.blit(startscherm_img, bordrect)
clock.tick(30)
button("Start",302,517,94,44,donkerOranje,lichtOranje,"start")
button("Music",553,517,94,44,donkerOranje,lichtOranje,"toggleMusic")
button("Quit",803,517,94,44,donkerOranje,lichtOranje,"quit")
pygame.display.flip()
game_intro()
我正在调用上面定义的按钮功能:
def button(msg,x,y,w,h,ic,ac,action=None):
mousePos = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if x+w > mousePos[0] > x and y+h > mousePos[1] > y:
pygame.draw.rect(screen, ac, (x,y,w,h))
if click[0] == 1 and action != None:
if action == "toggleMusic":
PAUSE.toggle()
time.sleep(0.3)
elif action == "quit":
pygame.quit()
time.sleep(0.3)
elif action == "start":
time.sleep(0.3)
intro = False
else:
pygame.draw.rect(screen, ic, (x,y,w,h))
smallText = pygame.font.SysFont("Bauhaus 93",30)
textSurf, textRect = text_objecten(msg, smallText)
textRect.center = ( (x+(w/2)), (y+(h/2)) )
screen.blit(textSurf, textRect)
它基本上只是检查特定区域内的鼠标点击,以及是否检测到它执行代码。
现在在我的开始屏幕上我有一个按钮开始,我希望它结束 game_intro() 循环,但是尝试intro = False不会产生任何结果。尝试break不起作用,因为它必须在循环本身中。
所以我的问题是:如何让这个开始按钮真正结束 game_intro() 循环?
PS 我对 Python 很陌生
当年话下
桃花长相依
慕姐4208626
噜噜哒
相关分类