当前位置: 首页 > news >正文

Python:pygame游戏编程之旅五(游戏界面文字处理详解)

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

#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import os import pygame from pygame.locals import * def load_image(pic_name): ''' Function:图片加载函数 Input:pic_name 图片名称 Output: NONE author: dyx1024 blog:http://blog.csdn.net/dyx1024 date:2012-04-15 ''' #获取当前脚本文件所在目录的绝对路径 current_dir = os.path.split(os.path.abspath(__file__))[0] #指定图片目录 path = os.path.join(current_dir, 'image', pic_name) #加载图片 return pygame.image.load(path).convert() def init_windows(): ''' Function:窗口初始化 Input:NONE Output: NONE author: dyx1024 blog:http://blog.csdn.net/dyx1024 date:2012-04-21 ''' pygame.init() display_surface = pygame.display.set_mode((600, 500)) pygame.display.set_caption('游戏中的文字处理(http://blog.csdn.net/dyx1024)') return display_surface def exit_windows(): ''' Function:退出处理 Input:NONE Output: NONE author: dyx1024 blog:http://blog.csdn.net/dyx1024 date:2012-04-21 ''' pygame.quit() sys.exit() def main(): ''' Function:字体处理 Input:NONE Output: NONE author: dyx1024 blog:http://blog.csdn.net/dyx1024 date:2012-04-21 ''' screen_surface = init_windows() back_image = load_image('mengqiqi.jpg') color_red = (255, 0, 0) color_green = (0, 255, 0) color_blue = (0, 0, 255) #第一组文字 #创建一个Font对象,其中LOWRBI__.TTF为下载的字体库 fontObj = pygame.font.Font('LOWRBI__.TTF', 32) #创建一个存放文字surface对象, textSurfaceObj = fontObj.render(u'HELLO MONCHHICHI', False, color_green) #文字图像位置 textRectObj = textSurfaceObj.get_rect() #第二组文字 fontObj2 = pygame.font.Font('simkai.TTF', 20) #添加下画线 fontObj2.set_underline(True) textSurfaceObj2 = fontObj2.render(u'很萌,有木有!', False, color_red) textRectObj2 = textSurfaceObj2.get_rect() textRectObj2.center = (80, 480) #第三组文字 #使用系统字体 fontObj3 = pygame.font.SysFont('宋体', 20) #加粗 fontObj3.set_bold(True) #斜体 fontObj3.set_italic(True) #文字具有蓝色背景 textSurfaceObj3 = fontObj3.render(u'又到凌晨了,睡', True, color_red, color_blue) textRectObj3 = textSurfaceObj3.get_rect() textRectObj3.center = (500, 10) while True: #绘图 screen_surface.blit(back_image, (0, 0)) screen_surface.blit(textSurfaceObj, textRectObj) screen_surface.blit(textSurfaceObj2, textRectObj2) screen_surface.blit(textSurfaceObj3, textRectObj3) for event in pygame.event.get(): if event.type == QUIT: exit_windows() pygame.display.update() if __name__ == '__main__': main()
运行:

 

 做一些解释:

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

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

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

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

-rwxrwx---+ 1 Administrators SYSTEM 367112 八月 17 2004 arial.ttf -rwxrwx---+ 1 Administrators SYSTEM 352224 八月 17 2004 arialbd.ttf -rwxrwx---+ 1 Administrators SYSTEM 226748 八月 17 2004 arialbi.ttf -rwxrwx---+ 1 Administrators SYSTEM 207808 八月 17 2004 ariali.ttf -rwxrwx---+ 1 Administrators SYSTEM 117028 八月 17 2004 ariblk.ttf -rwxrwx---+ 1 Administrators SYSTEM 127596 八月 17 2004 comic.ttf -rwxrwx---+ 1 Administrators SYSTEM 111476 八月 17 2004 comicbd.ttf -rwxrwx---+ 1 Administrators SYSTEM 303296 八月 17 2004 cour.ttf -rwxrwx---+ 1 Administrators SYSTEM 312920 八月 17 2004 courbd.ttf -rwxrwx---+ 1 Administrators SYSTEM 236148 八月 17 2004 courbi.ttf -rwxrwx---+ 1 Administrators SYSTEM 245032 八月 17 2004 couri.ttf -rwxrwx---+ 1 Administrators SYSTEM 79744 八月 17 2004 estre.ttf -rwxrwx---+ 1 Administrators SYSTEM 135984 八月 17 2004 framd.ttf -rwxrwx---+ 1 Administrators SYSTEM 152844 八月 17 2004 framdit.ttf -rwxrwx---+ 1 Administrators SYSTEM 214936 八月 17 2004 gautami.ttf -rwxrwx---+ 1 Administrators SYSTEM 155068 八月 17 2004 georgia.ttf -rwxrwx---+ 1 Administrators SYSTEM 141032 八月 17 2004 georgiab.ttf -rwxrwx---+ 1 Administrators SYSTEM 157388 八月 17 2004 georgiai.ttf -rwxrwx---+ 1 Administrators SYSTEM 159736 八月 17 2004 georgiaz.ttf -rwxrwx---+ 1 Administrators SYSTEM 136076 八月 17 2004 impact.ttf -rwxrwx---+ 1 Administrators SYSTEM 121452 八月 17 2004 kartika.ttf -rwxrwx---+ 1 Administrators SYSTEM 323980 八月 17 2004 l_10646.ttf -rwxrwx---+ 1 Administrators SYSTEM 73292 八月 17 2004 latha.ttf -rwx------+ 1 socrates None 493540 十二 2 2008 lingoes.ttf -rwxrwx---+ 1 Administrators SYSTEM 58740 八月 17 2004 lsans.ttf -rwxrwx---+ 1 Administrators SYSTEM 54320 八月 17 2004 lsansd.ttf -rwxrwx---+ 1 Administrators SYSTEM 60664 八月 17 2004 lsansdi.ttf -rwxrwx---+ 1 Administrators SYSTEM 59636 八月 17 2004 lsansi.ttf -rwxrwx---+ 1 Administrators SYSTEM 115068 八月 17 2004 lucon.ttf -rwxrwx---+ 1 Administrators SYSTEM 143864 八月 17 2004 mangal.ttf -rwxrwx---+ 1 Administrators SYSTEM 24124 八月 17 2004 marlett.ttf -rwxrwx---+ 1 Administrators SYSTEM 460728 八月 17 2004 micross.ttf -rwxrwx---+ 1 Administrators SYSTEM 40500 八月 17 2004 mvboli.ttf -rwxrwx---+ 1 Administrators SYSTEM 123424 十二 9 2002 nina.ttf -rwxrwx---+ 1 Administrators SYSTEM 131424 十二 9 2002 ninab.ttf -rwxrwx---+ 1 Administrators SYSTEM 489884 八月 17 2004 pala.ttf -rwxrwx---+ 1 Administrators SYSTEM 434004 八月 17 2004 palab.ttf -rwxrwx---+ 1 Administrators SYSTEM 344288 八月 17 2004 palabi.ttf -rwxrwx---+ 1 Administrators SYSTEM 430800 八月 17 2004 palai.ttf -rwxrwx---+ 1 Administrators SYSTEM 57348 八月 17 2004 raavi.ttf -rwxrwx---+ 1 Administrators SYSTEM 234280 八月 17 2004 shruti.ttf -rwxrwx---+ 1 Administrators SYSTEM 3996872 八月 17 2004 simfang.ttf -rwxrwx---+ 1 Administrators SYSTEM 10044356 八月 17 2004 simhei.ttf -rwxrwx---+ 1 Administrators SYSTEM 4135804 八月 17 2004 simkai.ttf -rwxrwx---+ 1 Administrators SYSTEM 221676 八月 17 2004 sylfaen.ttf -rwxrwx---+ 1 Administrators SYSTEM 69464 八月 17 2004 symbol.ttf -rwxrwx---+ 1 Administrators SYSTEM 383140 八月 17 2004 tahoma.ttf -rwxrwx---+ 1 Administrators SYSTEM 355436 八月 17 2004 tahomabd.ttf -rwxrwx---+ 1 Administrators SYSTEM 409280 八月 17 2004 times.ttf -rwxrwx---+ 1 Administrators SYSTEM 398372 八月 17 2004 timesbd.ttf -rwxrwx---+ 1 Administrators SYSTEM 239692 八月 17 2004 timesbi.ttf -rwxrwx---+ 1 Administrators SYSTEM 248368 八月 17 2004 timesi.ttf -rwxrwx---+ 1 Administrators SYSTEM 134108 八月 17 2004 trebuc.ttf -rwxrwx---+ 1 Administrators SYSTEM 123096 八月 17 2004 trebucbd.ttf -rwxrwx---+ 1 Administrators SYSTEM 131188 八月 17 2004 trebucbi.ttf -rwxrwx---+ 1 Administrators SYSTEM 139288 八月 17 2004 trebucit.ttf -rwxrwx---+ 1 Administrators SYSTEM 148636 八月 17 2004 tunga.ttf -rwxrwx---+ 1 Administrators SYSTEM 171792 八月 17 2004 verdana.ttf -rwxrwx---+ 1 Administrators SYSTEM 137616 八月 17 2004 verdanab.ttf -rwxrwx---+ 1 Administrators SYSTEM 155076 八月 17 2004 verdanai.ttf -rwxrwx---+ 1 Administrators SYSTEM 154800 八月 17 2004 verdanaz.ttf -rwxrwx---+ 1 Administrators SYSTEM 252820 八月 17 2004 vrinda.ttf -rwxrwx---+ 1 Administrators SYSTEM 118752 八月 17 2004 webdings.ttf -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


  

转载于:https://www.cnblogs.com/dyx1024/archive/2012/04/21/2556677.html

相关文章:

  • HDU 5358 First One(枚举)
  • 数据库回归测试
  • SELinux深入理解
  • Android应用资源---绘制资源类型(Drawable)(五)
  • 查看 SELinux状态及关闭SELinux
  • Linux下Qt与mysql建立连接
  • poj 2192 Zipper
  • centos下查看tomcat的版本号
  • 浅谈UML中常用的几种图——用例图
  • [转]项目中Struts/Spring/Hibernate的基本流程
  • mac brew 安装 nginx fpm mysql 教程
  • 微软等公司数据结构+算法面试100题--链表
  • UIPickerView的使用
  • 目标板UBI工具交叉编译
  • 一个web项目web.xml的配置中context-param配置作用
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Angular 4.x 动态创建组件
  • Druid 在有赞的实践
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • 前端设计模式
  • 前端学习笔记之观察者模式
  • 区块链将重新定义世界
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 以太坊客户端Geth命令参数详解
  • 主流的CSS水平和垂直居中技术大全
  • No resource identifier found for attribute,RxJava之zip操作符
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​低代码平台的核心价值与优势
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​水经微图Web1.5.0版即将上线
  • #162 (Div. 2)
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • $refs 、$nextTic、动态组件、name的使用
  • (145)光线追踪距离场柔和阴影
  • (2022 CVPR) Unbiased Teacher v2
  • (3)选择元素——(17)练习(Exercises)
  • (C语言)字符分类函数
  • (Note)C++中的继承方式
  • (二)hibernate配置管理
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (南京观海微电子)——COF介绍
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .netcore 获取appsettings
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET中GET与SET的用法
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • @Autowired和@Resource装配
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149