最近,我有了一个使用python和pygame库创建基于故事的游戏的想法。 所以我认为值得一试。
首先,让我们导入我们现在需要的东西。
- GameDevStory 5.
- 带有Apollo GraphQL的开源FPS — GeoStrike(Alpha)
- 游戏改变:澳大利亚游戏开发的下一个机会。
- Unity项目。 27小时内。首批模特
- 程序员最糟糕的敌人:未来的证明
导入pygame,sys
从pygame导入字体
pygame.init()#这不是导入,但是有必要初始化我们刚刚导入的模块
现在,让我们配置所有必要的东西。
大小=(800,600)#窗口大小
screen = pygame.display.set_mode(size)#屏幕设置
pygame.display.set_caption('Game')#将窗口命名为“游戏”
set.caption()
函数更改窗口的名称。 您可以根据需要命名窗口。
首先,我们需要创建一个字体渲染器,以特定的字体和大小渲染文本。 但是创建渲染的字体需要两件事:我们需要的字体和文本的大小。
将第一件事传递给字体渲染器的问题是您需要将整个路径的字符串传递给字体。 手动搜索所需的字体非常耗时,因此Pygame提供了一个简单的函数: font.match_font()
,它根据给定的字体名称返回字体的路径。
def search_font(name):
found_font = font.match_font(名称)
返回found_font
Pygame还提供了一个返回可用字体列表的函数: font.get_fonts()
。 尝试在您的外壳中运行此命令以查看所有可用字体:
>>>导入pygame
>>>从pygame导入字体
>>> font.get_fonts()
[“ waree”,“ liberationsansnarrow”,“ ubuntucondensed”,“ stixintegralssm”,“ garuda” ...
通常,在运行此功能时,它会随机地对列表进行混洗,因此我强烈不鼓励通过索引从此列表中获取字体。
现在我们解决了这个问题,让我们创建字体渲染器。
def font_renderer(字体,大小):
font_object = pygame.font.Font(字体,大小)
返回font_object
现在,让我们尝试使用我们呈现的字体和颜色(XY位置为5,500)来呈现消息。
它应该是这样的:
message = font_renderer(search_font('ubuntu'), 30).render(
"Some Text", # the text to render
True, # anti aliasing
(255,255,255)) # color (RGB value)
screen.blit(message, (5, 500)) # adds the rendered text to screen
pygame.display.update()#使用新文本更新屏幕
这不是一种真正方便的呈现消息的方法,但是至少现在可以呈现它! 让我们进一步简化一下:
def message_renderer(font_object,color,xy,message):
render_text = font_object.render(消息,True,(颜色))
screen.blit(rendered_text,(xy))
pygame.display.update()
#渲染消息
rendering_font = font_renderer(search_font('ubuntu'),30)
message_renderer(rendered_font,(255,255,255),(5,500),“ Hello world”)
我们可以进一步简化它!
让我们删除字体渲染器功能,并将消息显示编写为一个大功能。
def message_display(使用的字体,大小,颜色,xy,消息):
font_object = pygame.font.Font(used_font,size)
render_text = font_object.render(消息,True,(颜色))
screen.blit(rendered_text,(xy))
pygame.display.update()
#呈现讯息
ubuntu = search_font('ubuntu')
message_display(ubuntu,30,(255,255,255),(5,500),“你好,世界!”)
在这一点上,该函数看起来更加简单,只需要调用一行即可。 在编写基于故事的游戏时会派上用场。
总是用相同的参数编写长函数调用也很烦人。 因此,让我们编写一个具有所需参数的列表,以使用两个参数而不是五个参数来运行消息显示功能。
normal_message = [search_font('ubuntu'),30,(255,255,255),(5,400)]
现在,让我们使用变量。
message_display(* normal_message,“那是一条超短线!”)
我们设法简化了此任务,简化了调用该函数的过程,并且只需短短的一行代码 !
让我们别忘了做一个while循环,这样在我们启动游戏后我们的窗口就不会关闭。
def main():
而True:
message_display(* normal_message,“这里没什么可看的。”)
对于pygame.event.get()中的事件:
如果event.type == pygame.QUIT:
返回False
主要()
这是我们辛勤工作的结果:

进度看起来微不足道,但是稍后我们将使用此功能在角色之间编写对话,还有更多!
本教程就是这样。 感谢您的阅读!