我正在研究一个在线pygame教程。但是,当我试图在屏幕上放置文本时,我不确定它是如何工作的。根据{{3}}:
返回从系统字体加载的新Font对象。该字体将匹配请求的粗体和斜体标志。如果找不到合适的系统字体,则会在加载默认的pygame字体时返回。字体名称可以是逗号分隔的要查找的字体名称列表。
font = pygame.font.SysFont(None, 25)
# message to the user
def message_to_screen(msg,color):
screen_text = font.render(msg, True, color)
screen.blit(screen_text, [screen_width/2,screen_height/2])
答案 0 :(得分:0)
好的,这是我能给你的最简单的解释:
像Pygame这样的模块很简单(有时候不是那么简单......)代码,可以为普通的内置python函数添加新的特性和功能。这意味着当您导入模块时,您还可以从该模块中固有其所有的功能和类。因此,例如,普通的python不包含函数“draw”
pygame.draw.rect(arguments)
然而,当你导入pygame时,你从pygame代码中固有该函数。允许您绘制和开发GUI以获得更好的程序。
与对象相同。 Python是一种“面向对象的编程语言”。对象是一种定义和构造代码的数据存储。例如,Pygame中的精灵可以是你想要的任何东西。你的精灵可以是你想要的猴子,或者让木乃伊吃僵尸,变成一个简单的矩形。要用正确的形状,颜色,矩形和图像创建你想要的精确精灵,你需要用类来构造它。一个类将为你的精灵创建对象。请看这里:
#Here is the class named 'Button' of type ' pygame.sprite.Sprite'
class Button(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
#Here we define the shape of the sprite. In the case it is a simple
#150 by 75 rectangle surface. The shape can also be an image or any
#or any geometric shape you want
self.image = pygame.Surface((150, 75))
#here we define the color of the sprite
self.image.fill(green)
#and here we make sure the sprite has a rect
self.rect = self.image.get_rect()
所以你看到这个类定义了创建这个简单sprite所需的全部内容。当然它可以有更多的变量,具体取决于精灵的含义,但是现在让我们坚持使用简单的东西
现在,该类将此信息存储在一个对象中,以便稍后使用。像这样:
MySpriteObject = Button()
我会说很简单。所以现在你有了一个sprite对象,并且可以使用pygames的很多函数在屏幕上绘制它,添加交互,组合它以及许多其他东西。
所以最后你理解了python中一个对象的想法。现在问你真正的问题。
什么是字体? 好吧,字体是导入pygame时得到的对象。您不必在顶部执行类的操作,因为pygame模块会为您执行此操作。只需创建对象并使用“渲染”功能。所以基本上它是一个对象,你可以根据自己的喜好改变两件事。字体和大小
MyFontObject = pygame.font.Font(#Font here, #size here)
如果你使Font参数为None,那么它将为你提供默认的pygame字体。这就是我通常做的事情。但是,如果要更改字体,可以下载字体(通常为.ttf),然后在Font参数中键入其文件夹路径,也可以使用计算机上的字体。要做到这一点,而不是
MyFontObject = pygame.font.Font(#Font here,#size here)
你使用
MyFontObject = pygame.font.SysFont(#Name of font here, #size here)
#Name of font here ,您可以使用计算机上安装的任何字体替换它。要获取计算机上pygame可识别的字体名称列表:
pygame.font.get_fonts()
好的,这就是你创建字体对象的方法。现在来呈现它。 渲染字体使用字体对象来更改要显示的文本的形状和颜色。这是它的完成方式
text = MyFontObject.render(#Your Text Here,#true or false,#color)
screen.blit(tex,t(#X axis,#Y axis))
非常自我解释。除了 #true或false 我猜。如果你想使用一种技术来帮助文本看起来像pixeled和方形一样,那么你几乎会问你。如果你提供了真实的意愿。如果你不认真的文字,那么总是保持真实。
所以这就是我要说的。这是一个简短的总结:
1。)对象是一种数据存储,它存储不同的变量来构造和定义代码。因此,字体对象是一个定义字体不同内容的对象,例如大小和字体类型
2。)创建一个对象,我们使用如上所示的类
3.。)pygame模块已经存在一个字体类,所以你只需要立即调用字体对象:
MyFontObject = pygame.font.Font(#filepath or None for the default pygame font,#size here)
或系统上安装的字体,例如ariel(可以使用 pygame.font.get_font()查看
MyFontObject = pygame.font.SysFont(#Name of system font here,#size here)
4。)要使用此字体对象,请将其渲染:
text = MyFontObject.render(#Text here,#True or false,#color of text)
然后通常在屏幕上显示它并调用 pygame.display.update
screen.blit(text,(#X axis,#Y axis)
pygame.display.update()
我希望这会有所帮助。我知道我不是最好的解释者而且我写的太多了,但你至少应该阅读摘要。
P.S:很抱歉使用sprite来解释类和对象。我知道我去了主题,但这只是一个例子。