Pygame的消息多行?

时间:2010-05-05 05:46:34

标签: python pygame

我正在使用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)

屏幕上显示消息,但换行没有发生,所以我只能读取消息的第一部分。有没有办法让这条消息真正出现,或者我可以不使用'消息'吗?

2 个答案:

答案 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