再简单的游戏界面中均涉及文字处理,本节主要解读一下pygame模块中对文字及字体的处理方式。 同样,以实例进行讲解,先看看代码:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import sys
  4. import os
  5. import pygame
  6. from pygame.locals import *
  7. def load_image(pic_name):
  8. '''''
  9. Function:图片加载函数
  10. Input:pic_name 图片名称
  11. Output: NONE
  12. author: dyx1024
  13. blog:http://blog.csdn.net/dyx1024
  14. date:2012-04-15
  15. '''
  16. #获取当前脚本文件所在目录的绝对路径
  17. current_dir = os.path.split(os.path.abspath(__file__))[0]
  18. #指定图片目录
  19. path = os.path.join(current_dir, 'image', pic_name)
  20. #加载图片
  21. return pygame.image.load(path).convert()
  22. def init_windows():
  23. '''''
  24. Function:窗口初始化
  25. Input:NONE
  26. Output: NONE
  27. author: dyx1024
  28. blog:http://blog.csdn.net/dyx1024
  29. date:2012-04-21
  30. '''
  31. pygame.init()
  32. display_surface = pygame.display.set_mode((600, 500))
  33. pygame.display.set_caption('游戏中的文字处理(http://blog.csdn.net/dyx1024)')
  34. return display_surface
  35. def exit_windows():
  36. '''''
  37. Function:退出处理
  38. Input:NONE
  39. Output: NONE
  40. author: dyx1024
  41. blog:http://blog.csdn.net/dyx1024
  42. date:2012-04-21
  43. '''
  44. pygame.quit()
  45. sys.exit()
  46. def main():
  47. '''''
  48. Function:字体处理
  49. Input:NONE
  50. Output: NONE
  51. author: dyx1024
  52. blog:http://blog.csdn.net/dyx1024
  53. date:2012-04-21
  54. '''
  55. screen_surface = init_windows()
  56. back_image = load_image('mengqiqi.jpg')
  57. color_red = (255, 0, 0)
  58. color_green = (0, 255, 0)
  59. color_blue  = (0, 0, 255)
  60. #第一组文字
  61. #创建一个Font对象,其中LOWRBI__.TTF为下载的字体库
  62. fontObj = pygame.font.Font('LOWRBI__.TTF', 32)
  63. #创建一个存放文字surface对象,
  64. textSurfaceObj = fontObj.render(u'HELLO MONCHHICHI', False, color_green)
  65. #文字图像位置
  66. textRectObj = textSurfaceObj.get_rect()
  67. #第二组文字
  68. fontObj2 = pygame.font.Font('simkai.TTF', 20)
  69. #添加下画线
  70. fontObj2.set_underline(True)
  71. textSurfaceObj2 = fontObj2.render(u'很萌,有木有!', False, color_red)
  72. textRectObj2 = textSurfaceObj2.get_rect()
  73. textRectObj2.center = (80, 480)
  74. #第三组文字
  75. #使用系统字体
  76. fontObj3 = pygame.font.SysFont('宋体', 20)
  77. #加粗
  78. fontObj3.set_bold(True)
  79. #斜体
  80. fontObj3.set_italic(True)
  81. #文字具有蓝色背景
  82. textSurfaceObj3 = fontObj3.render(u'又到凌晨了,睡', True, color_red, color_blue)
  83. textRectObj3 = textSurfaceObj3.get_rect()
  84. textRectObj3.center = (500, 10)
  85. while True:
  86. #绘图
  87. screen_surface.blit(back_image, (0, 0))
  88. screen_surface.blit(textSurfaceObj, textRectObj)
  89. screen_surface.blit(textSurfaceObj2, textRectObj2)
  90. screen_surface.blit(textSurfaceObj3, textRectObj3)
  91. for event in pygame.event.get():
  92. if event.type == QUIT:
  93. exit_windows()
  94. pygame.display.update()
  95. if __name__ == '__main__':
  96. main()

运行:

做一些解释:

1、fontObj = pygame.font.Font('LOWRBI__.TTF', 32)

此句创建了一个Font类的对象,原型为:pygame.font.Font(filename, size): return Font

其中filename为字体文件,windows下字体文件所在目录为:C:\WINDOWS\Fonts,以TTF后续结尾。

例如,我的机器上字体如下:

  1. -rwxrwx---+ 1 Administrators SYSTEM   367112 八月 17 2004 arial.ttf
  2. -rwxrwx---+ 1 Administrators SYSTEM   352224 八月 17 2004 arialbd.ttf
  3. -rwxrwx---+ 1 Administrators SYSTEM   226748 八月 17 2004 arialbi.ttf
  4. -rwxrwx---+ 1 Administrators SYSTEM   207808 八月 17 2004 ariali.ttf
  5. -rwxrwx---+ 1 Administrators SYSTEM   117028 八月 17 2004 ariblk.ttf
  6. -rwxrwx---+ 1 Administrators SYSTEM   127596 八月 17 2004 comic.ttf
  7. -rwxrwx---+ 1 Administrators SYSTEM   111476 八月 17 2004 comicbd.ttf
  8. -rwxrwx---+ 1 Administrators SYSTEM   303296 八月 17 2004 cour.ttf
  9. -rwxrwx---+ 1 Administrators SYSTEM   312920 八月 17 2004 courbd.ttf
  10. -rwxrwx---+ 1 Administrators SYSTEM   236148 八月 17 2004 courbi.ttf
  11. -rwxrwx---+ 1 Administrators SYSTEM   245032 八月 17 2004 couri.ttf
  12. -rwxrwx---+ 1 Administrators SYSTEM    79744 八月 17 2004 estre.ttf
  13. -rwxrwx---+ 1 Administrators SYSTEM   135984 八月 17 2004 framd.ttf
  14. -rwxrwx---+ 1 Administrators SYSTEM   152844 八月 17 2004 framdit.ttf
  15. -rwxrwx---+ 1 Administrators SYSTEM   214936 八月 17 2004 gautami.ttf
  16. -rwxrwx---+ 1 Administrators SYSTEM   155068 八月 17 2004 georgia.ttf
  17. -rwxrwx---+ 1 Administrators SYSTEM   141032 八月 17 2004 georgiab.ttf
  18. -rwxrwx---+ 1 Administrators SYSTEM   157388 八月 17 2004 georgiai.ttf
  19. -rwxrwx---+ 1 Administrators SYSTEM   159736 八月 17 2004 georgiaz.ttf
  20. -rwxrwx---+ 1 Administrators SYSTEM   136076 八月 17 2004 impact.ttf
  21. -rwxrwx---+ 1 Administrators SYSTEM   121452 八月 17 2004 kartika.ttf
  22. -rwxrwx---+ 1 Administrators SYSTEM   323980 八月 17 2004 l_10646.ttf
  23. -rwxrwx---+ 1 Administrators SYSTEM    73292 八月 17 2004 latha.ttf
  24. -rwx------+ 1 socrates       None     493540 十二  2 2008 lingoes.ttf
  25. -rwxrwx---+ 1 Administrators SYSTEM    58740 八月 17 2004 lsans.ttf
  26. -rwxrwx---+ 1 Administrators SYSTEM    54320 八月 17 2004 lsansd.ttf
  27. -rwxrwx---+ 1 Administrators SYSTEM    60664 八月 17 2004 lsansdi.ttf
  28. -rwxrwx---+ 1 Administrators SYSTEM    59636 八月 17 2004 lsansi.ttf
  29. -rwxrwx---+ 1 Administrators SYSTEM   115068 八月 17 2004 lucon.ttf
  30. -rwxrwx---+ 1 Administrators SYSTEM   143864 八月 17 2004 mangal.ttf
  31. -rwxrwx---+ 1 Administrators SYSTEM    24124 八月 17 2004 marlett.ttf
  32. -rwxrwx---+ 1 Administrators SYSTEM   460728 八月 17 2004 micross.ttf
  33. -rwxrwx---+ 1 Administrators SYSTEM    40500 八月 17 2004 mvboli.ttf
  34. -rwxrwx---+ 1 Administrators SYSTEM   123424 十二  9 2002 nina.ttf
  35. -rwxrwx---+ 1 Administrators SYSTEM   131424 十二  9 2002 ninab.ttf
  36. -rwxrwx---+ 1 Administrators SYSTEM   489884 八月 17 2004 pala.ttf
  37. -rwxrwx---+ 1 Administrators SYSTEM   434004 八月 17 2004 palab.ttf
  38. -rwxrwx---+ 1 Administrators SYSTEM   344288 八月 17 2004 palabi.ttf
  39. -rwxrwx---+ 1 Administrators SYSTEM   430800 八月 17 2004 palai.ttf
  40. -rwxrwx---+ 1 Administrators SYSTEM    57348 八月 17 2004 raavi.ttf
  41. -rwxrwx---+ 1 Administrators SYSTEM   234280 八月 17 2004 shruti.ttf
  42. -rwxrwx---+ 1 Administrators SYSTEM  3996872 八月 17 2004 simfang.ttf
  43. -rwxrwx---+ 1 Administrators SYSTEM 10044356 八月 17 2004 simhei.ttf
  44. -rwxrwx---+ 1 Administrators SYSTEM  4135804 八月 17 2004 simkai.ttf
  45. -rwxrwx---+ 1 Administrators SYSTEM   221676 八月 17 2004 sylfaen.ttf
  46. -rwxrwx---+ 1 Administrators SYSTEM    69464 八月 17 2004 symbol.ttf
  47. -rwxrwx---+ 1 Administrators SYSTEM   383140 八月 17 2004 tahoma.ttf
  48. -rwxrwx---+ 1 Administrators SYSTEM   355436 八月 17 2004 tahomabd.ttf
  49. -rwxrwx---+ 1 Administrators SYSTEM   409280 八月 17 2004 times.ttf
  50. -rwxrwx---+ 1 Administrators SYSTEM   398372 八月 17 2004 timesbd.ttf
  51. -rwxrwx---+ 1 Administrators SYSTEM   239692 八月 17 2004 timesbi.ttf
  52. -rwxrwx---+ 1 Administrators SYSTEM   248368 八月 17 2004 timesi.ttf
  53. -rwxrwx---+ 1 Administrators SYSTEM   134108 八月 17 2004 trebuc.ttf
  54. -rwxrwx---+ 1 Administrators SYSTEM   123096 八月 17 2004 trebucbd.ttf
  55. -rwxrwx---+ 1 Administrators SYSTEM   131188 八月 17 2004 trebucbi.ttf
  56. -rwxrwx---+ 1 Administrators SYSTEM   139288 八月 17 2004 trebucit.ttf
  57. -rwxrwx---+ 1 Administrators SYSTEM   148636 八月 17 2004 tunga.ttf
  58. -rwxrwx---+ 1 Administrators SYSTEM   171792 八月 17 2004 verdana.ttf
  59. -rwxrwx---+ 1 Administrators SYSTEM   137616 八月 17 2004 verdanab.ttf
  60. -rwxrwx---+ 1 Administrators SYSTEM   155076 八月 17 2004 verdanai.ttf
  61. -rwxrwx---+ 1 Administrators SYSTEM   154800 八月 17 2004 verdanaz.ttf
  62. -rwxrwx---+ 1 Administrators SYSTEM   252820 八月 17 2004 vrinda.ttf
  63. -rwxrwx---+ 1 Administrators SYSTEM   118752 八月 17 2004 webdings.ttf
  64. -rwxrwx---+ 1 Administrators SYSTEM    81000 八月 17 2004 wingding.ttf

注意,最好将你要用到的文件复制一份到脚本所在目录下,这样在游戏发布时,可以一起打包,解决了目标机器上可能没有所使用字体的问题,另,如果需要特殊字体,可从网上下载,使用方法一样。

第二个参数size为字体大小。

2、textSurfaceObj = fontObj.render(u'HELLO MONCHHICHI', False, color_green)

此句为Font对象fontObj加载内容,并可设置颜色,格式等。

原型如下:Font.render(text, antialias, color, background=None): return Surface

参数解释:

text :要显示的文字内容,仅支持单行,即不能使用\n进行换行,如要打印多行,要建立多个font对象。

antialias:字体的边缘是否平滑,true表示平滑,false表示带有毛边。

color:文字颜色,取值RGB

background:文字背景色,可选。

3、textRectObj = textSurfaceObj.get_rect()

为testSurface创建一个Rect对象,大小由所有显示的文本高度及宽度决定。

4、设置字体加粗、下画线、斜体等属性,使用以下方法。

Font.set_bold(bool): return None 

      Font.set_underline(bool): return None

      Font.set_italic (bool): return None

Python:pygame游戏编程之旅五(游戏界面文字处理详解)的更多相关文章

  1. 【pygame游戏编程】第五篇-----动画显示

    import pygame import sys import os pygame.init() #窗口居中 os.environ[' screen_width = 600 screen_high = ...

  2. python+pygame制作一个可自定义的动态时钟和详解

    1.效果图 2.完整代码 #第1步:导出模块 import sys, random, math, pygame from pygame.locals import * from datetime im ...

  3. 第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解

    第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解 信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行 ...

  4. Spring事务Transaction配置的五种注入方式详解

    Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学 ...

  5. kafka原理和实践(五)spring-kafka配置详解

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  6. 【python游戏编程之旅】第七篇---pygame中的冲突检测技术

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中的Sprite模块和如何加载动画:http://www.cnblogs ...

  7. 【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/ ...

  8. 【python游戏编程之旅】第六篇---pygame中的Sprite(精灵)模块和加载动画

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 直到现在我们已经学了很多pygame基础知识了,从这篇博客开始我们将会学习pygame中高级部分,更多和精灵 ...

  9. 【python游戏编程之旅】第五篇---嗷大喵爱吃鱼小游戏开发实例

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 我们一同在前几期的博客中已经学到了很多pygame的基本知识了,现在该做个小游戏实战一下了. 前几期博客链接 ...

  10. 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...

随机推荐

  1. C# WinForm避免程序重复启动,限制程序只能运行一个实例【转】

    记录一下,原文:https://blog.csdn.net/xggbest/article/details/104231935 禁止多个进程运行,当重复运行时激活以前的进程 Program.cs: u ...

  2. 【YashanDB知识库】离线升级一章22.2不支持直接升级到23.1

    [标题]离线升级一章22.2不支持直接升级到23.1 [问题分类]文档问题 [关键词]YashanDB, 离线升级, 版本兼容 [问题描述]文档中提到22.2版本不支持直接升级到23.1. [问题原因 ...

  3. WebShell流量特征检测_哥斯拉篇

    80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测. 什么是一句话木马? 1.定义 顾名思义就是执行恶意指 ...

  4. MMDetection

    安装了mmdetection,想跑一下有几篇文章的工作.总觉得发展很快,一转眼几年时间,好多东西都变了.可再仔细看,感觉又没变啥,还是faster rcnn, ssd, yolo等,这几年变化的主要是 ...

  5. python之re库,正则表达

    一.前言 为什么要学re库呢?这里主要学他的正则表达,在编写安全脚本的时候肯定要遇到一些不规则的匹配规则,当然编写爬虫也少不了正则匹配去找到一些具有特殊特征的字符串.因此这是十分必要的,然而.re库使 ...

  6. SoftCLT: 时间序列的软对比学习《Soft Contrastive Learning for Time Series》(时间序列、时序分类任务、软对比学习、实例上软赋值距离差异、数据空间非嵌入空间度量相似性)

    2024年6月25日,10:11,好几天没看论文了,一直在摸鱼写代码(虽然也没学会多少),今天看一篇师兄推荐的. 论文:Soft Contrastive Learning for Time Serie ...

  7. Blazor静态服务端呈现(静态SSR)身份认证

    本文介绍 Blazor 静态服务端呈现(静态 SSR)模式下,用户登录身份认证是如何实现的. 1. SSR 简介 SSR 是服务器侧呈现,HTML 是由服务器上的 ASP.NET Core 运行时生成 ...

  8. Git 本地仓库与基础操作指令

    本地仓库 获取本地仓库 在电脑任意位置创建一个空目录(例如test)作为我们的本地Git仓库 进入这个目录中,右键打开Git Bash窗口 执行 git init命令 如果创建成功后可在文件夹下看到隐 ...

  9. 30. 串联所有单词的子串 Golang实现

    题目描述: 给定一个字符串 s 和一个字符串数组 words. words 中所有字符串 长度相同 . s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串. 例如, ...

  10. manim边学边做--图形间集合关系

    几何图形间的集合关系,是数学和几何学中的一个基本概念, 通过计算不同形状(如圆形.矩形.三角形等)的交集和并集等关系,可以实现复杂的图形处理和视觉效果. manim中提供了4种计算几何形状间集合关系的 ...