您現在的位置是:首頁 » 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))
這樣就可以顯示出中文了,上面的代碼有注釋,可以試試看。
本站部分內容轉載自網絡,如有侵權請聯系管理員及時刪除。
