为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2021-09-11 10:24:13
所以我正在为学校作业编写这段代码,我应该使用 pygame 并显示一些文本。我把这些文字放在不同的页面中,如果单击屏幕,它将显示下一个屏幕。这是我到目前为止所拥有的:import pygamepygame.init()pygame.font.init()# defining the screenSIZE = (1000, 700)screen = pygame.display.set_mode(SIZE)# define timeclock = pygame.time.Clock()#define buttonbutton = 0# define fontfontIntro = pygame.font.SysFont("Times New Roman",30)# define draw scenedef 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 = Truewhile 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()虽然它不起作用,有人可以帮忙吗?!谢谢!
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

button = 0在开始时定义,但永远不要在主循环中更改其值。在你的drawIntro函数中,你检查if button > 0if button == 1 很明显你永远不会执行任何这些if语句。

您需要通过调用来捕捉鼠标按钮pygame.mouse.get_pressed()并弄清楚如何正确切换到下一页。

顺便说一句,您也有if button == 13 次,我猜这不是您想要的,因为if语句会在编写时立即执行,因此您的第 3 页将立即显示。您需要一些计数器来跟踪下次按下鼠标按钮时需要显示的页面。


查看完整回答
反对 回复 2021-09-11
?
长风秋雁

TA贡献1757条经验 获得超7个赞

button当用户按下鼠标按钮时,您需要增加计数器。


该drawIntro函数不应在每个pygame.MOUSEMOTION事件的事件循环中调用一次,而应在主while循环中调用。此外,更改MOUSEMOTION为每次单击MOUSEBUTTONDOWN增加button一次。


drawIntro函数中的条件不正确。


import pygame



pygame.init()

SIZE = (1000, 700)

screen = pygame.display.set_mode(SIZE)

clock = pygame.time.Clock()

button = 0

fontIntro = 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 = True

while 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()



查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 936 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信