一つ前のページでは画面に画像を表示する方法について学習しました。
今回は 画面に文字を表示する方法 について見ていきましょう。
Chapter1:pygame入門|画面を表示しよう
・Chapter1-1:pygameを導入しよう
・Chapter1-2:ゲームループの基本を理解しよう
・Chapter1-3:画面に画像を表示しよう
・Chapter1-4:画面に文字を表示しよう ◁今回はここ
・Chapter1-5:画面上の画像を動かそう
Chapter2:簡単なノベルゲームを作ろう
Chapter3:簡単なアクションゲームを作ろう
Chapter4:ブロック崩しを作ろう
Chapter5:シューティングゲームを作ろう
Chapter6:pygameのお役立ち情報
pygameを利用してゲームアプリを開発する際、画面に文字を表示する技術は、スコアの表示やゲーム内のメッセージをユーザーに伝えるために欠かせません。
しかし、pygameでは文字をそのまま描写することはできません。そのため、文字を画像として作成し、それを画面に描画するという方法を用いる必要があります。
本記事では、初心者向けに pygameでの文字表示の基本 を解説し、フォントの設定方法や描画処理の流れ、さらには 日本語を正しく表示するための注意点 についても詳しく紹介します。
まずは、pygameにおけるフォントの設定方法を学んでいきましょう。
pygameでテキストを表示する基本手順
pygame では、文字を画面に表示するために pygame.font
モジュールを使用します。
このモジュールを使うことで、フォントを設定し、文字を画像として作成し、画面に描画することができます。
フォント設定から描画までのステップ
文字を表示するための基本的な手順は以下のとおりです。
1.フォントの設定
pygame.font.Font()
を使用してフォントを作成します。デフォルトのフォントを使う場合は、None
を指定します。
font = pygame.font.Font(フォントの種類, 文字サイズ)
これにより、フォントを作成する準備が整いました。
2.文字の画像を作成
render()
メソッドを使って、文字を画像に変換します。
画像変数 = font.render(表示させたい文字列, True, 文字の色)
(Trueは文字列を滑らかにする指定です)
3.画面に描写
blit()
を使用して、作成した文字の画像を画面上に描画します。
screen.blit(画像変数, (画像サイズ))
実例コードで見る文字表示の流れ
それでは、実際に pygame
を使って画面に文字を表示するプログラムを見てみましょう。
#1.初期化(ゲームの準備をする) import pygame, sys # pygameとsysをインポート pygame.init() # pygameを初期化 screen = pygame.display.set_mode((800,600)) # 画面の作成 # フォントの設定(デフォルトフォントを使用) font = pygame.font.Font(None, 50) # 文字サイズ50pxのフォントを作成 # "Hello!" のテキスト画像を作成(青色で描画) textimg = font.render("Hello!", True, pygame.Color("BLUE")) #2.メインループ while True: # 画面を白で塗りつぶす(背景色を白にする) screen.fill(pygame.Color("WHITE")) # 文字を画面に描画(座標 (200, 100) の位置に表示) screen.blit(textimg, (200, 100)) # 画面を更新(描画内容を適用) pygame.display.update() # イベント処理(ウィンドウを閉じる処理) for event in pygame.event.get(): if event.type == pygame.QUIT: # 閉じるボタンが押された場合 pygame.quit() # pygameを終了 sys.exit() # プログラムを終了
このコードを実行すると、白い背景の画面に「Hello!」という青色の文字が表示されます。
重要な部分を以下に解説します。
フォントの設定
font = pygame.font.Font(None, 50) # pygameライブラリのfontモジュールのFontクラスをインスタンス生成し、変数fontに代入
pygame.font.Font()
を使ってフォントを設定します。None
を指定するとデフォルトフォントが使用されます。50
は文字のサイズを表します(50px)。
テキスト画像の作成
textimg = font.render("Hello!", True, pygame.Color("BLUE")) # fontオブジェクト(変数font)のrenderメソッドを呼び出し、 # レンダリングされたテキストのオブジェクトを変数textimg に代入する
render()
メソッドを使い、"Hello!"
という文字の画像を作成します。True
を指定すると、アンチエイリアス(滑らかにする処理)が有効になります。pygame.Color("BLUE")
は、文字の色を青色にする指定です。
フォントサイズや色を自由に変更しよう
文字の色やサイズを変更する方法を学習しましょう。
文字のサイズは pygame.font.Font()
の第2引数で設定できます。また文字の色は、render()
の第3引数で変更できます。
例えば、以下のように異なるサイズや色のフォントを作成できます。
# 文字サイズを変更 small_font = pygame.font.Font(None, 30) # 小さい文字(30px) medium_font = pygame.font.Font(None, 50) # 標準サイズ(50px) large_font = pygame.font.Font(None, 80) # 大きい文字(80px) # 各フォントサイズの文字画像を作成 small_text = small_font.render("Small Text", True, pygame.Color("BLACK")) medium_text = medium_font.render("Medium Text", True, pygame.Color("RED")) large_text = large_font.render("Large Text", True, pygame.Color(128, 0, 128))
pygame.font.Font(None, サイズ)
のサイズ
を変更することで、文字の大きさを指定可能。pygame.Color("色の名前")
で色を指定すると、簡単に設定可能。pygame.Color((R, G, B))
のように RGB 値(0〜255)で細かく色を指定することも可能。
日本語を表示するには?エラー回避と対処法
これまでの章では、pygame.font.Font()
を使用して英語の文字を表示する方法を学びました。
しかし、pygame
のデフォルトフォントは日本語に対応していないため、そのままでは日本語の文字を表示することができません。
本章では、日本語フォントを使用して日本語の文字を表示する方法を解説します。
デフォルトで日本語が表示されない理由
pygame.font.Font(None, 50)
のように None
を指定すると、pygame
のデフォルトフォントが使用されます。
しかし、このフォントは英語などのアルファベットには対応していますが、日本語の文字には対応していません。
そのため、render()
を使用して日本語のテキストを描画しようとすると、文字が正しく表示されなかったり、空白になったりします。
試しに、先ほどのコードの「Hello!」の部分を「こんにちは!」に変えてみて下さい。文字化けして表示されるはずです。
日本語フォントの指定と読み込み方法
日本語を表示するためには、日本語フォントを指定する必要があります。
Windows や Mac には日本語フォントがプリインストールされているので、それを読み込ませましょう。
フォント名 | 代表的なOS |
---|---|
msgothic.ttc | Windows(MS ゴシック) |
meiryo.ttc | Windows(メイリオ) |
ヒラギノ角ゴ ProN | macOS |
NotoSansCJK-Regular.ttc | Google のオープンソースフォント |
以下のように、日本語フォントのパスを指定することで、日本語を表示できます。
# 日本語フォントの指定(Windows の場合) font = pygame.font.Font("C:/Windows/Fonts/msgothic.ttc", 50)
まとめ
本記事では、pygame
を使用して画面に文字を表示する方法について学びました。
ゲーム開発において、文字を表示することはスコアや残り時間の表示、ゲームの説明など、プレイヤーに情報を伝える上で欠かせない要素です。
文字を表示できるようになったことで、スコア表示やメニュー画面の作成など、より実践的なゲーム開発へと進む準備が整いました。次回は、「画面上の画像を動かす方法」について学習し、ゲームの動きを作り出す方法を習得していきます。
お疲れさまでした!
ゲーム開発の楽しさを味わいながら、引き続き pygame
の学習を進めていきましょう!
FAQ|pygameでのテキストと日本語表示について
- Q1. pygameで日本語が文字化けする原因は?
-
デフォルトフォントが日本語に対応していないためです。日本語対応フォントを指定しましょう。
- Q2. おすすめの日本語フォントはありますか?
-
「Noto Sans JP」や「IPAexゴシック」などが使いやすく、表示も安定しています。
- Q3. フォントサイズはどのように調整できますか?
-
pygame.font.Font()
の第2引数でサイズを指定できます。視認性に応じて適切に調整してください。
質問用コンタクトフォーム
この記事を書くにあたりAIを活用しています。
人間の目による確認も行っていますが、もし間違い等ありましたらご指摘頂けると大変助かります。