CODE Python RPG

初心者がPythonでRPGを作成する(第6回)フォント(font)を変えて日本語表示する

更新日:

こんにちは。
「Pythonでつくる ゲーム開発 入門講座」のChapter11,12(本格RPGを作ろう!全編・後編)を基にRPGを作っていきます。

前回はモンスタークラスを作成して、モンスターのパラメータをスプレッドシートから取得しました。

今回はフォント(font)を変えて日本語表示できるようにしてみます。

目次

  1. フォント(font)を変える
  2. メッセージを日本語に変える
  3. 最後に

フォント(font)を変える

pygameのフォントの説明はこちら。リファレンスを翻訳したページです。

今回はone_hour_dungeon.pyのファイルが対象です。
フォントを指定しているところはmain関数の2行です。

font = pygame.font.Font(None, 40) # fontS以外の画面表示フォント
fontS = pygame.font.Font(None, 30) # プレイヤーのパラメータ・位置情報・スピードなどの表示フォント    

変数「font」は日本語を特に使わないのでこのままにして、変数「fontS」を変えていきます。
Fontの一つ目の引数はフォントのファイルを指定することになっていますが、今はNoneで何も指定されていません。
この時に日本語にすると文字化けしてしまうので、日本語を使えません。

if fl_max >= 2:
    draw_text(screen, "You reached floor {}.".format(fl_max), 300, 460, font, CYAN)
# draw_text(screen, "Press space key", 320, 560, font, BLINK[tmr%6])
# ↓に変更
draw_text(screen, "スペースキーを押して下さい", 320, 560, font, BLINK[tmr%6])

変更前

変更後

 

 

というわけで、Noneのところにフォントファイルを指定します。
今回のフォントはこちらを利用させて頂きました。「JKG-L_3.ttf」
※女子高生っぽいフォントです( *´ω`* )

このファイルをfontフォルダに格納して、以下のようにしました。
2つ目の引数はフォントサイズで、30から20に変更しました。

fontS = pygame.font.Font("font/JKG-L_3.ttf", 20) # プレイヤーのパラメータ・位置情報・スピードなどの表示フォント

 

これでもう一度実行します。(font → fontSにします)

draw_text(screen, "スペースキーを押して下さい", 320, 560, fontS, BLINK[tmr%6])

かわいい日本語が表示されました(*´ω`*)

もう一つ、文字の線が少し細いので太字にします。
リファレンスによると太字にするのに「Font.set_bold」があるので、これを使います。

fontS.set_bold(True)

これでいきます。

 

 

メッセージを日本語に変える

他のメッセージを変えていきます。
が、ちょっとその前に、特に意味はないですけど、さっきのメッセージは元に戻します。

# draw_text(screen, "スペースキーを押して下さい", 320, 560, fontS, BLINK[tmr%6])
# ↓
draw_text(screen, "Press space key", 320, 560, font, BLINK[tmr%6])

 

では、改めまして。
一気に変えていきます!

# フォントを変えています(font → fontS)
# draw_text(screen, monster.name+" appear!", 300, 150, font, WHITE)
# ↓
draw_text(screen, monster.name + " が現れた!", 300, 200, fontS, WHITE)

# (省略)

# set_message("Your turn.")
# ↓
set_message(player.name + " のターン")

# (省略)

# set_message("You attack!")
# ↓
set_message(player.name + " の攻撃!")

# (省略)

# set_message(str(dmg)+"pts of damage!")
# ↓
set_message(str(dmg)+"ポイントのダメージを与えた!")

# (省略)

# set_message("Enemy turn.")
# ↓
set_message(monster.name + " のターン")

# (省略)

# set_message(monster.name + " attack!")
# ↓
set_message(monster.name + " の攻撃!")

# (省略)

# set_message(str(dmg)+"pts of damage!")
# ↓
set_message(str(dmg)+"ポイントのダメージを受けた!")

# (省略)

# if tmr == 1: set_message("...")
# if tmr == 2: set_message("......")
# if tmr == 3: set_message(".........")
# if tmr == 4: set_message("............")
# ↓
if tmr == 1: set_message(player.name + " は逃げ出した!")

# (省略)

# set_message("You failed to flee.")
# ↓
set_message("しかし、まわりこまれてしまった!")

# (省略)

# set_message("You lose.")
# ↓
set_message(player.name + " は気絶した...")

# (省略)

# set_message("You win!")
# ↓
set_message(player.name + " は " + monster.name + " を倒した!")

# (省略)

# set_message("Level up!")
# ↓
set_message(player.name + " はレベルが上がった!")

 

結果です。

良い感じです!(`・ω・´)

 

・・・(*•ω•*)

 

画面から文字が出てしまいました・・・(っω`c)゚。

次回はここを直します。
ちなみに、リファレンスを見る限りpygameのFontは改行ができないようなので、文字の表示位置を変えようと思います。

 

最後に

文字が画面から出てしまいましたが、、兎にも角にも日本語になったので良しとします。
次回、表示位置を修正していきます。

まとめサイトへ

 

 

【ご注意】
プログラムやデータなどは著作権法により保護されています。
著作者の許諾を得ずに、プログラムおよびデータそのものまたは改変したものを
配布したり販売したりすることはできません。
また、これらを利用して発生した損害などに関して、著作者は一切責任を負いません。

 

 

-CODE, Python, RPG
-, , , , , , , ,

Copyright© kerublog , 2021 All Rights Reserved Powered by STINGER.