pygame入门

pygame入门,第1张

文字显示

绘制文字也是依靠blit()实现的

获取字体

想要显示文字首先必须创建字体类,即Font类,因此需要事先准备好字体,字体可以是默认字体也可以是来自于系统的字体,也可以来自自己的ttf字体文件

pygame.font.get_default_font()
#查找默认字体的函数
#在前面加个print()可以看到结果
pygame.font.get_fonts()
#获取系统所有字体
#规范输出
# a=0
# for font in pygame.font.get_fonts():
#     print(font, end=" ")
#     a+=1
#     if a%5==0:
#         print("")
关键函数

想要显示文字需要先创建一个字体类

SysFont(name,size,bold=False,italic=Faise)
#name=系统字体名称;size代表字体尺寸;bold代表字体是否加粗,italic代表是否斜体
#返回值为Font类的对象
#实例
font=pygame.font.SysFont("幼圆",18)
如果name=None则此时使用的是系统默认字体

如果想用自己的字体文件,则必须使用Font类的构造函数来创建字体对象

__init__(filename,size)
new_font=pygame.font.Font.__init__()
重点

将文字区域转换为image surface的关键方法:

font类.render(text,antialias,color,background)
#antialias是否打开抗锯齿,color文字颜色,background背景颜色
#实例
text = font.render("测试",True, (255, 0, 0))

在调用render()之前可以调用三种方法设置字体属性

set_underline是设置下划线

使用默认字体显示文字
font=pygame.font.SysFont(None,32)
text=font.render("text",True,(0,0,255))
#or
font=pygame.font.Font(None,32)
text=font.render("text",Trun,(0,0,255))

显示中文需要使用支持中文的字体,也可以是自己的ttf字体文件

实例:

import pygame
import sys
def main():
    pygame.init()
    #游戏窗口大小
    screen=pygame.display.set_mode((600,400))
    #标题
    pygame.display.set_caption("文字显示")
    print("系统默认字体为:"+pygame.font.get_default_font())
    print("系统内含字体:")
    a=0
    for i in pygame.font.get_fonts():
       a+=1
       print(i,end="")
       if a%5==0:
           print("")
    #使用默认字体创建字体类
    font1=pygame.font.SysFont(None,32)
    text1=font1.render("default_font",True,(0,0,255))
    #系统自带字体
    font2=pygame.font.SysFont("华文行楷",48)
    text2_1=font2.render("系统字体:华文行楷",True,(255,0,0))
    text2_2=font2.render("华文行楷",True,(255,0,0),(220,220,220))
    #其他字体
    font3=pygame.font.SysFont("幼圆",48,True,True)
    text3=font3.render("系统字体幼圆加粗斜体",True,(0,0,0))
    #自己的ttf文件加下划线
    font4=pygame.font.Font(None,32)
    font4.set_bold(True)#加粗
    font4.set_italic(True)#斜体
    font4.set_underline(True)#加下划线
    text4=font4.render("customed font",True,(0,128,0))
    while True:
        #游戏循环 点击退出自动退出
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                pygame.quit()
                sys.exit()
        #填充颜色
        screen.fill((255,255,255))
        screen.blit(text1,(200,20))
        screen.blit(text2_1,(80,80))
        screen.blit(text2_2,(320,80))
        screen.blit(text3,(10,170))
        screen.blit(text4,(80,300))
        pygame.display.update()
if __name__=="__main__":
    main()

屏幕显示小结

已经学习了窗口管理,Surface对象,图片,图形与文字的绘制,但是不同功能在pygame的不同模块才能调用所以较为复杂,因此这里小结一下理清脉络

  • 首先是屏幕窗口,它实际上对应了一个display surface,所有需要在屏幕显示的内容都必须事先绘制到该screen上

  • 在screen surface绘制完毕后,内容不会自动显示在屏幕上,而是需要执行pygame.display.flip()或者pygame.display.update()才能生效。

  • 不同的内容对象,其绘制方法也有所不同。

  • 对于颜色的填充,只需要调用screen surface对象的fill()方法即可,它可以把整个screen surface区域或部分区域填充为指定颜色

  • 简单图形调用的是pygame.draw下的相关函数,如pygaem,draw.line()

  • 图片图像则通过pygame.image.load()把图片加载到image surface然后调用screen surface对象的blit()方法把image surface绘制到screen surface上

  • 文字首先要通过一系列方法把文字转换Surface然后调用screen surface对象的blit()方法把该Surface绘制到screen surface上,它和图片的绘制类似。先字体类,然后调用字体类的render(),完成转换后,通过blit()绘制到屏幕上

要点

  • 注意绘制顺序,后绘制的会把先绘制的对象覆盖住,所以一般会先画背景图像

  • 注意及时更新屏幕,如果在循环里有一个不断绘制的图形,会出现重影

  • 记得抵用pygame.display.flip()或pygame.display.update()更新屏幕,这样新绘制的图像才会显示

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/943148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-18
下一篇 2022-05-18

发表评论

登录后才能评论

评论列表(0条)

保存