Python Can';我找不到在pygame中生成多行的方法
我知道pygame的Python Can';我找不到在pygame中生成多行的方法,python,python-3.x,pygame,Python,Python 3.x,Pygame,我知道pygame的screen.blit并不支持多行,但我无法找到解决方法。问这个问题的所有其他线程都不能使用我的代码。我该怎么做 我试图通过在DisplayRoom.prompt上使用splitline()将响应一分为二,然后让游戏分别加载两行,但是DisplayRoom.prompt.splitline()不会将`DisplayRoom.prompt从元组转换为列表,只返回它的值 屏幕填充(背景色) txt_surface=userfont.render(文本、真、彩色) 屏幕显示(txt
screen.blit
并不支持多行,但我无法找到解决方法。问这个问题的所有其他线程都不能使用我的代码。我该怎么做
我试图通过在DisplayRoom.prompt
上使用splitline()
将响应一分为二,然后让游戏分别加载两行,但是DisplayRoom.prompt.splitline()
不会将`DisplayRoom.prompt从元组转换为列表,只返回它的值
屏幕填充(背景色)
txt_surface=userfont.render(文本、真、彩色)
屏幕显示(txt_表面,(100800))
response=promptfont.render(DisplayRoom.prompt,True,color)
屏幕blit(响应,(80300))
pygame.display.flip()
时钟。勾选忙循环(60)#限制FPS
当我定义
DisplayRoom.prompt
时,我希望\n将其换行,但它不起作用,这就是我在这里的原因。它不是不支持多行的Surface.blit
blit
只需在另一个曲面上绘制一个曲面
,它不关心曲面
包含什么
它是不支持多行的。文件明确指出:
文本只能是单行:不呈现换行符
所以我不知道您的代码中有什么DisplayRoom.prompt
,但如果不是字符串,则肯定会失败:render
引发TypeError:文本必须是unicode或字节
如果是带换行符的字符串,则不会呈现换行符
您必须拆分文本并分别渲染每一行
在下面的示例中,我创建了一个简单的函数blitlines
,它演示了如何操作
import sys
import pygame
def blitlines(surf, text, renderer, color, x, y):
h = renderer.get_height()
lines = text.split('\n')
for i, ll in enumerate(lines):
txt_surface = renderer.render(ll, True, color)
surf.blit(txt_surface, (x, y+(i*h)))
background_colour = (0, 0, 0)
textcolor = (255, 255, 255)
multitext = "Hello World!\nGoodbye World!\nI'm back World!"
pygame.init()
screen = pygame.display.set_mode((500, 500))
userfont = pygame.font.Font(None, 40)
screen.fill(background_colour)
blitlines(screen, multitext, userfont, textcolor, 100, 100)
pygame.display.flip()
#main loop
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
这是屏幕上的结果