Python:pygame界面显示文字详解

 

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

  1. #!/usr/bin/env python

  2. # -*- coding: utf-8 -*-

  3.  
  4. import sys

  5. import os

  6. import pygame

  7. from pygame.locals import *

  8.  
  9. def load_image(pic_name):

  10. '''

  11. Function:图片加载函数

  12. Input:pic_name 图片名称

  13. Output: NONE

  14. author: dyx1024

  15. blog:http://blog.csdn.net/dyx1024

  16. date:2012-04-15

  17. '''

  18. #获取当前脚本文件所在目录的绝对路径

  19. current_dir = os.path.split(os.path.abspath(__file__))[0]

  20.  
  21. #指定图片目录

  22. path = os.path.join(current_dir, 'image', pic_name)

  23.  
  24. #加载图片

  25. return pygame.image.load(path).convert()

  26.  
  27. def init_windows():

  28. '''

  29. Function:窗口初始化

  30. Input:NONE

  31. Output: NONE

  32. author: dyx1024

  33. blog:http://blog.csdn.net/dyx1024

  34. date:2012-04-21

  35. '''

  36. pygame.init()

  37. display_surface = pygame.display.set_mode((600, 500))

  38. pygame.display.set_caption('游戏中的文字处理(http://blog.csdn.net/dyx1024)')

  39. return display_surface

  40.  
  41. def exit_windows():

  42. '''

  43. Function:退出处理

  44. Input:NONE

  45. Output: NONE

  46. author: dyx1024

  47. blog:http://blog.csdn.net/dyx1024

  48. date:2012-04-21

  49. '''

  50. pygame.quit()

  51. sys.exit()

  52.  
  53. def main():

  54. '''

  55. Function:字体处理

  56. Input:NONE

  57. Output: NONE

  58. author: dyx1024

  59. blog:http://blog.csdn.net/dyx1024

  60. date:2012-04-21

  61. '''

  62.  
  63. screen_surface = init_windows()

  64. back_image = load_image('mengqiqi.jpg')

  65.  
  66. color_red = (255, 0, 0)

  67. color_green = (0, 255, 0)

  68. color_blue = (0, 0, 255)

  69.  
  70. #第一组文字

  71.  
  72. #创建一个Font对象,其中LOWRBI__.TTF为下载的字体库

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

  74.  
  75. #创建一个存放文字surface对象,

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

  77.  
  78. #文字图像位置

  79. textRectObj = textSurfaceObj.get_rect()

  80.  
  81. #第二组文字

  82. fontObj2 = pygame.font.Font('simkai.TTF', 20)

  83.  
  84. #添加下画线

  85. fontObj2.set_underline(True)

  86. textSurfaceObj2 = fontObj2.render(u'很萌,有木有!', False, color_red)

  87. textRectObj2 = textSurfaceObj2.get_rect()

  88. textRectObj2.center = (80, 480)

  89.  
  90. #第三组文字

  91.  
  92. #使用系统字体

  93. fontObj3 = pygame.font.SysFont('宋体', 20)

  94.  
  95. #加粗

  96. fontObj3.set_bold(True)

  97.  
  98. #斜体

  99. fontObj3.set_italic(True)

  100.  
  101. #文字具有蓝色背景

  102. textSurfaceObj3 = fontObj3.render(u'又到凌晨了,睡', True, color_red, color_blue)

  103. textRectObj3 = textSurfaceObj3.get_rect()

  104. textRectObj3.center = (500, 10)

  105.  
  106.  
  107. while True:

  108. #绘图

  109. screen_surface.blit(back_image, (0, 0))

  110. screen_surface.blit(textSurfaceObj, textRectObj)

  111. screen_surface.blit(textSurfaceObj2, textRectObj2)

  112. screen_surface.blit(textSurfaceObj3, textRectObj3)

  113. for event in pygame.event.get():

  114. if event.type == QUIT:

  115. exit_windows()

  116. pygame.display.update()

  117.  
  118. if __name__ == '__main__':

  119. main()


运行:

 

 

 做一些解释:

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

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

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

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

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

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

       text = font.render(u"Hello 我爱你", 1, (10, 10, 10)) #显示内容必须转换成Unicode,否则中文不能正常显示

     此句为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

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值