所以我已经定义了一个功能Meteor并设置了尺寸以及它在屏幕上的显示位置。
def Meteor(Meteorx, Meteory, Meteorw, Meteorh, colour):
pygame.draw.rect(Screen, colour, [Meteorx,Meteory, Meteorw, Meteorh])
但是我想向其中添加文本,但是我无法弄清楚如何将其着色为矩形(注意:我尝试使用font.render等)。我是要正确解决这个问题还是要比将其放置在直肠表面上更简单?
源代码https://github.com/WamblyTK/Word-Blaster/blob/master/Full%20Draft%20%231
答案 0 :(得分:2)
首先,您需要一个pygame.font
,它可以由pygame.font.SysFont()
或pygame.font.Font
创建。例如:
import pygame.font
font = pygame.font.SysFont('Times New Roman', 30)
使用字体对象,可以通过.render()
来呈现文本。结果是一个pygame.Surface
对象。
如果需要,可以通过pygame.transform.smoothscale
将表面缩放到特定大小。
最后,可以通过blit
将文本绘制到表面。例如:
def Meteor(Meteorx, Meteory, Meteorw, Meteorh, colour):
text = font.render('test text', False, colour)
text = pygame.transform.smoothscale(text.convert(), (Meteorw, Meteorh))
Screen.blit(text, (Meteorx, Meteory))
如下面的评论中所述,使用pygame.freetype
更容易。例如:
import pygame.freetype
font = pygame.freetype.SysFont('Times New Roman', 30)
def Meteor(Meteorx, Meteory, Meteorw, Meteorh, colour):
font.render_to(Screen, (Meteorx, Meteory), 'test text', colour, size=Meteorw)