paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

スリーカードポーカーゲームのGUI化への道3 テキストの表示

テキストの表示は画像ファイルを用意しておいて出力するという方法もありますが、ゲーム中の処理結果を使いたい場合もあるのでテキストの出力もメモしておきます。

今回やること

  • 手役と勝敗のテキストを画面に表示する
  • テキストはターミナル版の出力をそのまま使用する

ターミナル版

ターミナル版の出力です。
Your Handの役、Dealer Handの役、最後のXXX WIN!をそのままGUI画面に出力させたいというワケです。

===== Open Your Hand =====

Your Hand: ['♢A', '♠K', '♠3'] ['High card!']

The same chips as Ante is required to match the dealer.
Do you play in your hand? (Costs $10): [y/n]y

===== Open Dealer Hand =====

Dealer Hand: ['♣8', '♠4', '♡J'] ["Less than Queen-high. Dealer can't play"]

You WIN!

コード修正

テキストの出力も画像とほとんど同じです。
画像読み込みの代わりにフォントを定義します。

一部の抜粋です。
ちょっと変数の補足。

  • winner
    • 手札を比較して勝者を出力する
  • p_role
    • プレイヤーの手役。タプルで手役、カードランクが格納されてます。[0][0]で手役の文字列を表示できます。
  • d_role
    • ディーラーの手役。内容はプレイヤーと同じ。
font = pygame.font.Font(None, 20)

winner_text = font.render(winner, True, (255,255,255))
p_role_text = font.render('Player hand: ' + p_role[0][0], True, (255,255,255))
d_role_text = font.render('Dealer hand: ' + d_role[0][0], True, (255,255,255))

       DISPLAYSURF.blit(p_role_text, (400, 260))
       DISPLAYSURF.blit(d_role_text, (400, 280))
       DISPLAYSURF.blit(winner_text, (400, 300))

font.Fontでフォントとサイズを定義。 font.renderでテキスト内容と位置の定義です。
blitは画像の時と同じ。

実行

実行させるとこんな感じ。

f:id:paloma69:20210131154745p:plain

f:id:paloma69:20210131155031p:plain

起動したら完全自動で終わってしまいますが、役と勝敗が出るようになりました。
思い描いていた形に近づいてきましたよ。

まとめ

とりあえず貼り付け系はひと段落ですかね。
ここからよりゲームらしくするためにボタン処理系を追加していかないといけません。

近づいたといいながらもまだまだかかりそうです。