如何在 Pygame 中单击并转到另一个页面?

所以我正在为学校作业编写这段代码,我应该使用 pygame 并显示一些文本。我把这些文字放在不同的页面中,如果单击屏幕,它将显示下一个屏幕。


这是我到目前为止所拥有的:


import pygame


pygame.init()

pygame.font.init()

# defining the screen

SIZE = (1000, 700)

screen = pygame.display.set_mode(SIZE)

# define time

clock = pygame.time.Clock()

#define button

button = 0

# define font

fontIntro = pygame.font.SysFont("Times New Roman",30)

# define draw scene

def drawIntro(screen):

    #start

    if button > 0:

        screen.fill((0, 0, 0))

        text = fontIntro.render("Sigle click to start", 1, (255,255,255))

        screen.blit(text, (300, 300, 500, 500))

        pygame.display.flip() 


    #page1

    if button == 1:

        screen.fill((0, 0, 0))

        text = fontIntro.render("page 1", True, (255, 255, 255))

        pygame.display.flip()

    #page2

    if button == 1:

        screen.fill((0, 0, 0))

        text = fontIntro.render("page 2", True, (255, 255, 255))

        screen.blit(text, (300,220,500,200))

        pygame.display.flip()

    #page3

    if button == 1:

        screen.fill((0, 0, 0))

        text = fontIntro.render("page3", True, (255, 255, 255))

        screen.blit(text, (200,190,500,200))

        pygame.display.flip()



running = True

while running:

    for evnt in pygame.event.get():

        if evnt.type == pygame.QUIT:

            running = False

        if evnt.type == pygame.MOUSEMOTION:

            mx,my = evnt.pos

            print(evnt.pos)

            drawIntro(screen)


pygame.quit()

虽然它不起作用,有人可以帮忙吗?!谢谢!


慕桂英3389331
浏览 937回答 2
2回答

HUWWW

您button = 0在开始时定义,但永远不要在主循环中更改其值。在你的drawIntro函数中,你检查if button > 0或if button == 1 很明显你永远不会执行任何这些if语句。您需要通过调用来捕捉鼠标按钮pygame.mouse.get_pressed()并弄清楚如何正确切换到下一页。顺便说一句,您也有if button == 13 次,我猜这不是您想要的,因为if语句会在编写时立即执行,因此您的第 3 页将立即显示。您需要一些计数器来跟踪下次按下鼠标按钮时需要显示的页面。

长风秋雁

button当用户按下鼠标按钮时,您需要增加计数器。该drawIntro函数不应在每个pygame.MOUSEMOTION事件的事件循环中调用一次,而应在主while循环中调用。此外,更改MOUSEMOTION为每次单击MOUSEBUTTONDOWN增加button一次。drawIntro函数中的条件不正确。import pygamepygame.init()SIZE = (1000, 700)screen = pygame.display.set_mode(SIZE)clock = pygame.time.Clock()button = 0fontIntro = pygame.font.SysFont("Times New Roman",30)def drawIntro(screen):    #start    if button == 0:  # == 0        screen.fill((0, 0, 0))        text = fontIntro.render("Sigle click to start", 1, (255,255,255))        screen.blit(text, (300, 300, 500, 500))    elif button == 1:  #page1        screen.fill((0, 0, 0))        text = fontIntro.render("page 1", True, (255, 255, 255))        screen.blit(text, (300,220,500,200))    elif button == 2:  #page2        screen.fill((0, 0, 0))        text = fontIntro.render("page 2", True, (255, 255, 255))        screen.blit(text, (300,220,500,200))    elif button == 3:  #page3        screen.fill((0, 0, 0))        text = fontIntro.render("page3", True, (255, 255, 255))        screen.blit(text, (200,190,500,200))running = Truewhile running:    for evnt in pygame.event.get():        if evnt.type == pygame.QUIT:            running = False        if evnt.type == pygame.MOUSEBUTTONDOWN:  # Once per click.            button += 1    drawIntro(screen)    pygame.display.flip()pygame.quit()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python