再简单的游戏界面中均涉及文字处理,本节主要解读一下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. 傅里叶级数 傅里叶变换 FFT 时域 频域 功率谱 能量谱 功率谱密度PSD

    傅立叶级数是基于周期函数的,如果我们把周期推广到

  2. CSS – Media Query

    前言 Media Query 是用来做 RWD 的, 类似 JS 的 if else. 写的多有伤管理, 所以要谨慎使用哦. 参考: Learn CSS Media Query In 7 Minute ...

  3. 前置机器学习(二):30分钟掌握常用Jupyter Notebook用法

    相较于Pycharm执行py文件来说,Jupyter Notebook可保存执行过程,添加图表.注释等富文本说明的功能,使其对机器学习的开发者格外友好. 本文包含机器学习环境安装,Jupyter No ...

  4. C++ string类型常用操作

    string类型操作 字符串切割 str.substr(索引,切割的个数)  ->  返回字符串 注意:第二个参数为切割的个数 string buf = "abcdefg"; ...

  5. Swift查看变量内存地址

    withUnsafePointer 不说话,先放代码 withUnsafeBufferPointer(to: a) { point in let address = UnsafeRawPointer( ...

  6. 对 LLM 工具使用进行统一

    我们为 LLM 确立了一个跨模型的 统一工具调用 API.有了它,你就可以在不同的模型上使用相同的代码,在 Mistral.Cohere.NousResearch 或 Llama 等模型间自由切换,而 ...

  7. AD域下,域管理员网络无法正常连接

    排错思路:1.是否拥有上网权限, test 超级管理员自然是有上网权限的(该项排除): 2.浏览器是否使用了代理 ,有些软件在安装的时候,会自动启用浏览器的代理,开启某些特定的端口: 3.其他原因 解 ...

  8. docker安装及基本的镜像拉取

    docker 使用存储库安装 卸载它们以及相关的依赖项. yum remove docker \ docker-client \ docker-client-latest \ docker-commo ...

  9. 小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM

    小米 13T Pro 是一款性能卓越.设计精美的旗舰机型,具备多项领先配置,且在与前一代产品及友商机型的对比中优势明显,值得深入探讨. 性能提升 小米 13T Pro 搭载了最新的 天玑 9200+ ...

  10. linux(centos7)中安装7z

    linux(centos7)中安装7z 一. 先安装wget yum -y install wget 二. 下载7z的压缩包 wget https://sourceforge.net/projects ...