您現在的位置是:首頁 » python編程資訊
資訊內容
用python和pygame游戲編程入門-顯示文字
極客小將2020-10-28-
上一節我們通過鍵盤可以控制角色移動,如果要讓角色說話,那就要用到文字顯示。
上一節我們通過鍵盤可以控制角色移動,如果要讓角色說話,那就要用到文字顯示。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))
這樣就可以顯示出中文了,上面的代碼有注釋,可以試試看。
本站部分內容轉載自網絡,如有侵權請聯系管理員及時刪除。
