专栏首页萌海无涯Python之pygame学习绘制文字制作滚动文字(6)

Python之pygame学习绘制文字制作滚动文字(6)

pygame绘制文字

今天来学习绘制文本内容,毕竟游戏中还是需要文字对玩家提示一些有用的信息。

字体常用的不是很多,在pygame中大多用于提示文字,或者记录分数等事件。

字体绘制基本分为以下几个步骤:

  1. 初始化字体模块
    1. pygame.init()
  2. 创建一个字体对象
    1. 可以从文件或者系统内字体选取
      1. pygame.font.SysFont('幼圆',50)
  3. 绘制文本对象。
    1. a.render("测试字体",True,(255,0,0),(0,0,0))
  4. 屏幕绘制字体
    1. screen.blit(text,[jx.x,jx.y])

绘制字体是用的表面中blit函数来绘制图像:

blit(source,dest,area = None,special_flags = 0) - > Rect

在此Surface上绘制源Surface。可以使用dest参数定位绘图。Dest可以是表示源左上角的坐标对。Rect也可以作为目标传递,矩形的topleft角将用作blit的位置。目标矩形的大小不会影响blit。

也可以传递可选的区域矩形。这表示要绘制的源Surface的较小部分。

也就是我们需要绘制的元素,需要绘制的位置输入进去,可以接受矩形区域的位置参数。

这里还演示了获取文本宽高,让文本在屏幕居中滚动的效果。

import pygame
import pprint

def main():
    # 初始化pygame
    pygame.init()
    # 初始化字体模块
    pygame.font.init()
    # 如果字体模块已初始化,则为true
    print('是否初始化',pygame.font.get_init())
    # 获取默认字体的文件名
    print('默认字体名',pygame.font.get_default_font())
    # 获取所有可用的字体
    pprint.pprint(pygame.font.get_fonts())
    # 在系统上找到特定的字体
    print('查找字体',pygame.font.match_font('arial'))
    #从系统字体创建一个Font对象
    # (名称,大小,粗体=假,斜体=假) - >字体
    a = pygame.font.SysFont('幼圆',50)

    # 从文件或对象绘制文本
    # pygame.font.Font('文件或对象',大小)
    
    # 在新Surface上绘制文本
    # 显示内容、是否消除锯齿、字体颜色、背景颜色
    text = a.render("测试字体",True,(255,0,0),(0,0,0))

    # 取消初始化字体模块
    # pygame.font.quit()
    # 设置屏幕
    screen = pygame.display.set_mode((500,100))
    # 设置矩形区域
    ztx, zty, ztw, zth = text.get_rect()
    # 绘制显示文字的矩形区域
    jx = pygame.Rect(500,50-zth/2,ztw, zth) # 初始位置设置屏幕右边,并居住显示,2/1屏幕的高度 - 2/1字体的高度 向上移动是减
    # 设置游戏时钟
    clock = pygame.time.Clock()
    while True:
        # 文字滚动的频率
        clock.tick(30)
        # 重绘屏幕
        screen.fill((0,0,0))
        # 退出事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit(0)
        # 文字从右向左移动
        jx.x -= 5
        # 如果字体全部移动出屏幕,则设置字体X轴位置为510, 500的话会出现的比较突然
        if jx.x < 0 - ztw:
            jx.x = 510
        # 屏幕绘制字体,
        screen.blit(text,[jx.x,jx.y])
        # 更新屏幕显示
        pygame.display.update()

if __name__ == '__main__':
    main()

本文分享自微信公众号 - 萌海无涯(mhwyhtwa)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python的高级语法与用法

    Python是一种易于学习又功能强大的编程语言。它不仅有简单有效的面向对象编程,还有高效的高级数据结构,就让我们一起来学习这部分的内容吧。

    stormwen
  • Python的类和对象

    面向对象编程是最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。理解面向对象编程有助于你像程序员那样看世...

    stormwen
  • Python函数式编程

    要讲函数式编程,只要有点编程基础的同学应该可以想到命令式编程。我们平时写代码时,用命令式编程最多,不管业务代码有多复杂,都离不开以下几个步骤:

    stormwen
  • 正则表达式(三)

    这两天在读刻意练习,这本书写的很好,里面有一段是这样写的:“我深深地困在,当前的处境中。四面高墙,定义了我的空间格局。我就在这里,生活了很多年,而且可能继续...

    stormwen
  • Python的类的继承

    继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来类的情况下对这些类进行扩展。

    stormwen
  • JSON——轻量级数据格式

    很多公司的加班是今天做昨天的事情,或者今天做今天还没完成的事情,反正加班是因为做不完事情,而我理解的加班应该是今天要把明天的事情做完,这个月把下个月的事情做完,...

    stormwen
  • Python的类和方法——成员可见性

    使用装饰器@classmethod。第一参数必须是当前类对象,该参数名一般约定为「cls」,当然cls也可以换成其他名字,通过它来传递类的属性和方法(不能传实例...

    stormwen
  • Python小技巧:3个处理文件路径的简单方法

    几乎所有计算机在文件夹名称间使用的都是正斜杠,但微软Windows使用的是却反斜杠, 这不免造成了编程的一个小烦恼。

    AI研习社
  • 函数和参数

    Python里面有很多内置函数,使用函数可以让我们更快捷得实现要求,但函数那么多,死记硬背肯定不行,就需要我们平时多留心,遇到新的内置函数,多用help指令看看...

    stormwen
  • 400多人刷过的一道Python题目

    最近写的文章会偏向于Python实战一些,大家不要看着刷题,心里就有抵触了,其实刷题一直是学习的一个必要途径。你想想高中时候,如果你光听听课,学学理论就行的话,...

    stormwen

扫码关注云+社区

领取腾讯云代金券