在pygame中显示中文
最近对python产生了兴趣,进而又对pygame产生了兴趣。我本身对游戏编程就很着迷,而pygame的简单又让我的着迷程度更进了一步。
做一个堂堂的中国人,自然希望在游戏中的文字是中文了,但是在游戏中显示中文似乎没有那么简单。经过一番研究,终于搞清楚怎样在pygame中显示中文了。
下面就以pygame文档中的一段代码为例,介绍如何显示中文。
# -*- coding: gbk -*-
import pygame
from pygame.locals import *
import local2utf8
def main():
# Initialise screen
pygame.init()
screen = pygame.display.set_mode((650, 150))
pygame.display.set_caption((u'基础 pygame 程序').encode('utf-8'))
# Fill background
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((250, 250, 250))
# Display some text
#font = pygame.font.Font(None, 60) #原始代码,使用默认字体,不能显示中文
#font = pygame.font.Font('../FredGuo/simkai.ttf', 60) #正确,文件名可以包含路径
#font = pygame.font.Font('楷体', 60) #错误,name参数应该是字体的文件名
font = pygame.font.SysFont('楷体', 60) #正确,name参数应该是字体名,并且字符集要与系统的相同
text = font.render(u"Hello 我爱你", 1, (10, 10, 10)) #显示内容必须转换成Unicode,否则中文不能正常显示
textpos = text.get_rect()
textpos.center = background.get_rect().center
background.blit(text, textpos)
# Blit everything to the screen
screen.blit(background, (0, 0))
pygame.display.flip()
# Event loop
while 1:
for event in pygame.event.get():
if event.type == QUIT:
return
screen.blit(background, (0, 0))
pygame.display.flip()
if __name__ == '__main__': main()
代码中的注释说的已经很清楚了,在这里做一下简单的总结:
首先,使窗口的标题显示中文是很简单的,只要将字符集转换成utf-8就可以;
然后,我们说说稍微麻烦些的内容。在pygame中显示文字主要是用Font类,在创建类的实例时就需要指定字体。如果想使用pygame的默认字段只需将None传递Font就可以,但是这样不可以显示中文。
要使用Font显示中文主要有两种方法:一个是使用pygame.font.Font(name, size)来创建新的Font实例,其中name是字体的文件名(.ttf或.ttc文件),可能包含路径,这需要你知道字体文件的存放位置,方便起见,可以将文件copy到程序目录下。另一个方法是使用pygame.font.SysFont(name, size)方法创建Font的实例,它利用系统的可用字体,如果失败会默默地使用pygame的默认字体,其中name是字体的名称(楷体、宋体等);需要注意的是name的字符集要与系统的使用的字符集尽量一致,否则可能出现问题。
在使用Font的render()方法绘制中文时需要注意将字符集转换成Unicode,否则无法正常显示中文。
OK,That’s it。最后需要提醒一下,一定要注意自己文件使用的字符集,因为并不是在文件头指定什么字符集就会自动地用什么字符集保存文件。
分享到:
相关推荐
主要介绍了python3下pygame如何实现显示中文,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
用Python和Pygame写游戏-从入门到精通 中文pdf版本 部分目录如下: 系统学习部分 用Python和Pygame写游戏-从入门到精通(1) Pygame的历史,安装Pygame,第一个Pygame脚本 用Python和Pygame写游戏-从入门到精通(2)...
pygame做的界面开发实例,目前有: 按钮:支持hover、隐藏、点击、中文显示、文字对齐方向 文本框:支持隐藏、点击、中文显示、文字对齐方向 编辑框:支持隐藏、点击、回退键删除、ctrl+v粘贴中文显示、文字对齐...
Python实现中文文字雨源代码,代码中用的字体SimHei.ttf可自行下载,该代码基于pygame实现了中文文字雨
在主函数中,我们利用Pygame来创建窗口,加载背景图像和字体,然后通过主游戏循环不断更新和显示烟花效果。当用户按下特定键时触发新的烟花生成,这为整个场景增添了互动性。烟花的尾迹和颜色效果使得整个模拟更加...
5、封装文本显示,解决中文显示,并支持指定位置显示和居中显示。 6、利用pygame.sprite类及sprite.Group封装pygame下可用的按钮类,直接支持鼠标点击后确认点击对象,并以Event绑定按钮对象相关响应事件。 7、利用...
pygame实现利用font做出游戏
使用pygame编的英语单词挑战小游戏,可通过读取单词文件,随机抽取单词,给出中文解释,通过键盘输入,在屏幕上显示单词,若输入正确则显示,可显示得分和进度,可通过Tab键提示,通过Enter键跳过。
所有显示字体均为Secret Bian的繁体中文。 该游戏使用python 3和pygame编码。 GitHub中的最新代码。 《秘密特朗普》有英文和中文的README.txt描述的游戏规则。 您可以在以下位置下载特朗普版本(秘密王牌):...
软件利用到了pyqt5、openpyxl、pyttsx3、PIL、pygame等库,重点是用到了PyQt5中的图片显示、布局管理、Qmovie、QvideoWidget等功能,另外还尝试了百度api、微软api制作语音合成,效果很好,孩子说很喜欢 具体用pip ...
软件利用到了pyqt5、openpyxl、pyttsx3、PIL、pygame等库,重点是用到了PyQt5中的图片显示、布局管理、Qmovie、QvideoWidget等功能,另外还尝试了百度api、微软api制作语音合成,效果很好,孩子说很喜欢 具体用pip ...