上一节我们通过键盘可以控制角色移动,如果要让角色说话,那就要用到文字显示。Pygame可以直接调用系统字体,或者也可以使用TTF字体,TTF就是字体文件,可以从网上下载。为了使用字体,你得先创建一个Font对象,对于系统自带的字体:
my_font = pygame.font.SysFont("arial", 16)
第一个参数是字体名,第二个自然就是大小,一般来说“Arial”字体在很多系统都是存在的,如果找不到的话,就会使用一个默认的字体,你也可以使用pygame.font.get_fonts()来获得当前系统所有可用字体。
一旦你创建了一个font对象,你就可以使用render方法来写字了,然后就能blit到屏幕上:
text_surface = my_font.render("Pygame is cool!", True, (0,0,0), (255, 255, 255))
第一个参数是写的文字;第二个参数是个布尔值,以为这是否开启抗锯齿,就是说True的话字体会比较平滑,不过相应的速度有一点点影响;第三个参数是字体的颜色;第四个是背景色,如果你想没有背景色(也就是透明),那么可以不加这第四个参数。
下面我们来修改上一节的程序,加上一个文字跟随章鱼移动:
#!/usr/bin/env python #指定图像文件名称 background_image_filename = './img/Underwater.png' mouse_image_filename = './img/octopus.png' import pygame from pygame.locals import * from sys import exit #初始化pygame,为使用硬件做准备 pygame.init() print(pygame.font.get_fonts())#查看系统支持的字体 font = pygame.font.SysFont("华文楷体", 20) text_surface= font.render("Hello!", True, (255, 255, 255)) #text_surface = font.render(u"你好啊,我是老章!", True, (255, 255, 255)) #创建了一个窗口 screen = pygame.display.set_mode((960, 720), 0, 32) #设置窗口标题 pygame.display.set_caption("海底世界") #加载并转换图像 background = pygame.image.load(background_image_filename).convert() kcursor = pygame.image.load(mouse_image_filename).convert_alpha() #游戏主循环 x, y = 0, 0 move_x, move_y = 0, 0 while True: for event in pygame.event.get(): if event.type == QUIT: exit() if event.type == KEYDOWN: #键盘有按下? if event.key == K_LEFT: #按下的是左方向键的话,把x坐标减一 move_x = -1 elif event.key == K_RIGHT: #右方向键则加一 move_x = 1 elif event.key == K_UP: #类似了 move_y = -1 elif event.key == K_DOWN: move_y = 1 elif event.type == KEYUP: #如果用户放开了键盘,图就不要动了 move_x = 0 move_y = 0 #计算出新的坐标 x+= move_x y+= move_y screen.fill((0,0,0)) screen.blit(background, (0,0)) screen.blit(kcursor, (x,y)) screen.blit(text_surface, (x, y)) #在新的位置上画图 pygame.display.update()
如何显示中文?
简单来说,首先你得用一个可以使用中文的字体,宋体、黑体什么的,然后文字使用unicode,即u”中文的文字”这种
text_surface = font.render(u"你好啊,我是老章!", True, (255, 255, 255))
这样就可以显示出中文了,上面的代码有注释,可以试试看。
本站内容未经许可,禁止任何网站及个人进行转载。