我一直在四处搜寻,我真的找不到任何关于如何写文字的好资源?我已经尝试使用渲染命令来处理文本,但它对我不起作用。
此外,你在这里的时候;是否存在“叠加”类型的东西,您可以在其中确切地看到坐标的位置?每次我使用坐标来确定一个区域时,我无法弄清楚整个坐标系如何与使用反复试验分开...
非常感谢,
答案 0 :(得分:2)
surf = pygame.display.set_mode((WIDTH, HEIGHT))
...
# get font object
font = pygame.font.SysFont('Arial', 12, bold=True)
# render a given font into an image
img = font.render('Text to write', True,
pygame.Color(FONT_FG_COLOR),
pygame.Color(FONT_BG_COLOR))
# and finally put it onto the surface.
# the code below centres text image
surf.blit(img, ((surf.get_width() - img.get_width())/2,
(surf.get_height() - img.get_height())/2))
答案 1 :(得分:2)
这里有一些帮助:http://inventwithpython.com/pygame/chapters/
并针对您的具体问题,请阅读:http://inventwithpython.com/pygame/chapter2.html
向下滚动到“Pixel Coordinates”以了解pygames中的坐标系
在第2章中进一步向下滚动,了解字体以及如何渲染它们。
答案 2 :(得分:1)
渲染字体非常简单!
import pygame
from pygame.locals import *
# Initialize the font system and create the font and font renderer
pygame.font.init()
default_font = pygame.font.get_default_font()
font_renderer = pygame.font.Font(default_font, size)
# To create a surface containing `Some Text`
label = font_renderer.render(
"Some Text", # The font to render
1, # With anti aliasing
(255,255,255)) # RGB Color
这会返回一个可以对另一个表面进行blit的表面。该表面还包含具有所述字体尺寸的Rect。
# To apply this surface to another you can do the following
another_surface.blit(
label, # The text to render
(0,0)) # Where on the destination surface to render said font
现在坐标系非常简单,
您可以像这样创建屏幕
import pygame
from pygame.locals import *
screen_dimensions = width, height = 800, 600
screen = pygame.display.set_mode(screen_dimensions)
在pygame中,这将创建一个像这样的屏幕
800
-----------
- -
600 - -
- -
-----------
最左上角是坐标0,0
,最右下角是800,600
如果你想在左上角用5px的填充字体对字体进行blit,你可以执行以下操作:
# Using the label created above
screen.blit(label, (5, 5))
我在PyGame中编写了一个生命克隆游戏,你可以看到源https://github.com/MikeMcMahon/GameOfLife并弄清楚我是如何使用这些字体来渲染它们的。
关于覆盖物以查看事物的确切坐标。您可以通过捕获鼠标位置pygame.mouse.get_pos()
并将其推送到您在曲面上渲染的标签来轻松实现。