不知道文章分類該掛什麼好,姑且分在興趣嗜好吧。
Python雖號稱三大受歡迎的程式語言之一,網路上能找到的教學資源也算豐富,但仍遠遠不比C++及Java,華語的線上討論區甚至可以說是沒有的,因此,若有同好走過路過,對我的文章內容有什麼見解,歡迎參與討論。
Pygame中文字顯示白框?
我想這應該也不是專屬中文字的問題啦,不管顯示出問題的是什麼奇奇怪怪的符號,這問題其實在於程式找不到可用來顯示文字的字體檔。用
pygame.font.SysFont("字體名稱", 字體大小)
指定字體檔的方式非常不可靠,找不到字體檔時也不會哀一聲說沒找到(也可能是Console的問題),直接塞幾個白框敷衍了事。網路上查遍各種資料,中文顯示問題大多是說跟編碼有關,要加個什麼u前綴轉unicode什麼的。不!至少在這問題上跟編碼沒半毛錢關係,關鍵在於,到底如何才能讓程式找到指定的字體檔。
import pygame
def show_text(text, x, y):#專門顯示文字的方法,除了顯示文字還能指定顯示的位置
x = x
y = y
text = font.render(text, True, (255, 255, 255))
screen.blit(text, (x, y))
pygame.display.update()
pygame.init()
version = " v0.0.0"
pygame.display.set_caption("test" + version)
clock = pygame.time.Clock()
screen = pygame.display.set_mode((800, 600))
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((125, 125, 125))
screen.blit(background, (0, 0))
font = pygame.font.Font("Fonts/msjh.ttc", 24)#本文主角
pygame.display.update()
running = True
run_opening = True
while running:
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if run_opening:
op_background = pygame.Surface(screen.get_size())
op_background = op_background.convert()
op_background.fill((0, 0, 0))
screen.blit(op_background, (0, 0))
text = "中文中文abc123"#文字顯示內容在此,根本用不著u
show_text(text, 100, 0)#使用show_text()
pygame.display.update()
pygame.quit()