Python Can';我找不到在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

我知道pygame的
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()
这是屏幕上的结果