微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么文字不显示在 pygame 中?

如何解决为什么文字不显示在 pygame 中?

如果玩家按下键盘上的向上箭头,我试图让玩家反击,我希望玩家上升一个显示计数器上升和下降相同。但是计数器没有显示

import pygame
pygame.init()
pygame.display.set_mode()
pygame.font.init()
Red = (247,12,12)
White = (255,255,255)
Blue = (0,157,255)
Black=(0,0)
X = 1400
Y = 1000
players = 0
display_surface = pygame.display.set_mode((X,Y))
font = pygame.font.Font('freesansbold.ttf',20)
text = font.render("Player one is:",True,Black,White)
textRect = text.get_rect()
textRect.center = (X // 4.4,Y // 3.6)
str(players)
while True:
    display_surface.fill(White)
    pygame.display.update()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit(); #sys.exit() if sys is imported
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_0:
                print("hey,you pressed the key,'0'!")
            if event.key == pygame.K_1:
                print("Doing whatever")
            if event.key == pygame.K_UP:
                int(players)
                players = players+1
                str(players)
                text1 = font.render(players,White)
                text1Rect = text1.get_rect()
                text1Rect.center = (X // 4.4,Y // 3)
                display_surface.blit(text,textRect)
                int(players)
pygame.display.update()

解决方法

str(x) 转换 x 并返回一个字符串:

str(players)

str(players)

但是,您根本不需要它。您必须在清除显示之后和更新显示之前渲染文本。在应用程序循环之前初始化 text1

while True:
    # [...]

    # clear display
    display_surface.fill(White)
   
    # render secene
    display_surface.blit(text,textRect)
    display_surface.blit(text1,text1Rect)
    
    # [...]
    
    # update display
    pygame.display.update()

在按下 UP 时更改并重新渲染 text1 表面:

if event.key == pygame.K_UP:
    players += 1
    text = font.render("Player one is: " + str(players),True,Black,White)
    textRect = text.get_rect(center = (X // 4.4,Y // 3))

完整示例:

import pygame
pygame.init()
pygame.font.init()
Red = (247,12,12)
White = (255,255,255)
Blue = (0,157,255)
Black=(0,0)
X = 1400
Y = 1000
players = 0
display_surface = pygame.display.set_mode((X,Y))
font = pygame.font.Font('freesansbold.ttf',20)

text = font.render("Player one is:",White)
textRect = text.get_rect(center = (X // 4.4,Y // 3.6))
text1 = font.render(str(players),White)
text1Rect = text.get_rect(center = (X // 4.4,Y // 3))

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_0:
                print("Hey,you pressed the key,'0'!")
            if event.key == pygame.K_1:
                print("Doing whatever")
            if event.key == pygame.K_UP:
                players += 1
                text1 = font.render(str(players),White)
                text1Rect = text.get_rect(center = (X // 4.4,Y // 3))

    display_surface.fill(White)
    display_surface.blit(text,text1Rect)
    pygame.display.update()

pygame.quit()
exit()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。