我正在使用pygame和livewires(虽然我不认为这部分是相关的)来创建游戏。我已经让游戏正常运行了,但我想在比赛开始之前做一些类似于标题画面的东西。但是,当我尝试显示新行时,它无法识别。这就是我所拥有的:
begin_message=games.Message(value=""" Destroy the Bricks!\n
In this game, you control a paddle,\n
controlled by your mouse,\n
and attempt to destroy all the rows of bricks.\n
Careful though, you only have 1 life.\n
Don't mess up! The game will start in\n
5 seconds.""",
size=30,
x=games.screen.width/2,
y=games.screen.height/2,
lifetime=500,
color=color.white,
is_collideable=False)
games.screen.add(begin_message)
屏幕上显示消息,但换行没有发生,所以我只能读取消息的第一部分。有没有办法让这条消息真正出现,或者我可以不使用'消息'吗?
答案 0 :(得分:3)
livewires games.Message class不能这样做。
浏览games.Message的源代码,它显示它继承自games.Text,它有一个方法_create_surface()。最后,这会调用pygame.font.Font.render()将文本绘制到曲面。如果您查看documentation for render(),则说明
“文字只能是一行: 不会呈现换行符。“
至于你如何做你想做的事情,我建议你制作几个Message对象,每行一个。然后一个接一个地在屏幕上显示它们。
答案 1 :(得分:0)
网站上有几个用于pygame的text rendering projects。一些是python模块(您可以在本地包含该文件,而无需安装。)
更高级的是Glyph。