• Python之pygame学习绘制文字制作滚动文字


    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("gisoracle",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()
    来自:https://cloud.tencent.com/developer/article/1489726
  • 相关阅读:
    差分约束
    c++ 添加
    2 jQuery的入口函数
    1 jQuery的概述
    清除浮动的常用4种方式
    虚函数指针和它对应的虚函数表
    对于C++中顿悟
    前端和后端交互的一些认识
    前端初学者一看就懂:Ajax调用后台接口案例(转)
    前端和后端是怎么交互的(转)
  • 原文地址:https://www.cnblogs.com/gisoracle/p/12023438.html
Copyright © 2020-2023  润新知