Python 为什么我的文本没有显示在Pygame窗口中?

Python 为什么我的文本没有显示在Pygame窗口中?,python,pygame,Python,Pygame,这是我第一次尝试编写通用代码,所以我开始学习如何制作pygame。 我决定买一个简单的饼干点击器 我无法使用cookie counted值来呈现文本,有人能帮我吗? text是一个对象。在主应用程序循环中,必须在与窗口关联的曲面上blit文本曲面 screen.blit(text,textRect) 当分数更改时,重新创建文本表面 text=font.render('COOKIES:'+str(分数),真,黑,白) 一个pygame.Surface对象没有位置。因此,返回的位置是(0,0)

这是我第一次尝试编写通用代码,所以我开始学习如何制作pygame。 我决定买一个简单的饼干点击器 我无法使用cookie counted值来呈现文本,有人能帮我吗?

text
是一个对象。在主应用程序循环中,必须在与窗口关联的曲面上
blit
文本
曲面

screen.blit(text,textRect)
当分数更改时,重新创建文本表面

text=font.render('COOKIES:'+str(分数),真,黑,白)
一个
pygame.Surface
对象没有位置。因此,返回的位置是(0,0)。从曲面检索时,通过关键字参数设置位置:

cookie\u pos=(x,y)
x、 y=event.pos
如果cookie.get\u rect(topleft=cookie\u pos).collide点(x,y):
# [...]
我建议在主应用程序循环而不是事件循环中清除显示、绘制文本并更新显示:

cookie\u pos=(x,y)
#6-永远循环
运行=真
运行时:
#处理事件
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.MOUSEBUTTONDOWN:
#设置鼠标单击的x、y位置
x、 y=event.pos
如果cookie.get\u rect(topleft=cookie\u pos).collide点(x,y):
分数+=1
text=font.render('COOKIES:'+str(分数),真,黑,白)
#文本是一个对象。在主应用程序循环中,必须在与窗口关联的曲面上
blit
文本
曲面

screen.blit(text,textRect)
当分数更改时,重新创建文本表面

text=font.render('COOKIES:'+str(分数),真,黑,白)
一个
pygame.Surface
对象没有位置。因此,返回的位置是(0,0)。从曲面检索时,通过关键字参数设置位置:

cookie\u pos=(x,y)
x、 y=event.pos
如果cookie.get\u rect(topleft=cookie\u pos).collide点(x,y):
# [...]
我建议在主应用程序循环而不是事件循环中清除显示、绘制文本并更新显示:

cookie\u pos=(x,y)
#6-永远循环
运行=真
运行时:
#处理事件
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.MOUSEBUTTONDOWN:
#设置鼠标单击的x、y位置
x、 y=event.pos
如果cookie.get\u rect(topleft=cookie\u pos).collide点(x,y):
分数+=1
text=font.render('COOKIES:'+str(分数),真,黑,白)

#问题在于你没有把它放在屏幕上。与cookie图像一样,您需要执行
screen.blit(text,textRect)
。我还建议把它们放在循环中,这样每一帧都会出现在屏幕上。这意味着如果更改x或y,它将移动。像这样的

running = True
while (running):
    screen.fill(WHITE) #reset the screen
    screen.blit(cookie ,  ( x,y)) # paint to screen
    text = font.render('COOKIES : ', True, BLACK) 
    screen.blit(text,textRect)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            # Set the x, y postions of the mouse click
            x, y = event.pos
            if cookie.get_rect().collidepoint(x, y):
                score += 1
                print("Cookie:",score)

        pygame.display.update() 

问题是你没有把它放在屏幕上。与cookie图像一样,您需要执行
screen.blit(text,textRect)
。我还建议把它们放在循环中,这样每一帧都会出现在屏幕上。这意味着如果更改x或y,它将移动。像这样的

running = True
while (running):
    screen.fill(WHITE) #reset the screen
    screen.blit(cookie ,  ( x,y)) # paint to screen
    text = font.render('COOKIES : ', True, BLACK) 
    screen.blit(text,textRect)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            # Set the x, y postions of the mouse click
            x, y = event.pos
            if cookie.get_rect().collidepoint(x, y):
                score += 1
                print("Cookie:",score)

        pygame.display.update() 

谢谢你的回复!我注意到,当我点击cookie时,它开始到处运行,它仍然注册了一个计数,但我在代码中找不到使cookie运行的地方。我需要它呆在一个地方,这样我就可以实现攻击cookie的蚂蚁敌人。@KaizIsCoding我已经更改了答案中的示例。现在饼干就放在一个地方。@KaizIsCoding然后你做错了什么。您的代码中有多少个
pygame.display.flip()
/
pygame.display.update()
。在应用程序循环的末尾必须有1个。如果你有超过1个,你会得到闪烁。哦,我有多个。我把它们取下来,它就把它修好了。非常感谢。谢谢你的回复!我注意到,当我点击cookie时,它开始到处运行,它仍然注册了一个计数,但我在代码中找不到使cookie运行的地方。我需要它呆在一个地方,这样我就可以实现攻击cookie的蚂蚁敌人。@KaizIsCoding我已经更改了答案中的示例。现在饼干就放在一个地方。@KaizIsCoding然后你做错了什么。您的代码中有多少个
pygame.display.flip()
/
pygame.display.update()
。在应用程序循环的末尾必须有1个。如果你有超过1个,你会得到闪烁。哦,我有多个。我把它们取下来,它就把它修好了。非常感谢。谢谢你的回复!下面的回复也有同样的问题,cookie刚刚开始到处运行…谢谢你的回复!下面的回复也有同样的问题,cookie刚刚开始到处运行。。。