読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習・Deep Learningに関する記事が多いです。



デバッグ情報の表示

Pygame

今回はちょっと簡単ですが、画面上にデバッグ情報が表示されるようにします。下のスクリーンショットのように画面の左上にマップ名、プレイヤー名、プレイヤー座標(単位:マス)を表示します。せっかくなので前に作ったメッセージエンジン(2008/6/28)を使って描画します。

pyrpg21.zip
f:id:aidiary:20100807182351p:plain

デバッグ情報の表示

def main():
    # メッセージエンジン
    msg_engine = MessageEngine()
    while True:
        # デバッグ情報を画面に表示
        show_info(screen, msg_engine, player, map)

def show_info(screen, msg_engine, player, map):
    """デバッグ情報を表示"""
    # マップ名
    msg_engine.draw_string(screen, (10,10), map.name.upper())
    # プレイヤー名
    msg_engine.draw_string(screen, (10,40), player.name.upper())
    # プレイヤー座標
    msg_engine.draw_string(screen, (10,70), "%d_%d" % (player.x, player.y))

前回と違うところはmsg_engineをmain()に持ってきてMessageWindowには引数で渡しているところです。 msg_engineはデバッグ情報を表示するshow_info関数でも使います。それぞれの関数でmsg_engineオブジェクトを作ってもよいですが、MessageEngineの内部で画像をたくさんロードしているので2つ作るのはメモリの無駄です。メッセージの描画はあちこちで使うので msg_engineはグローバル変数にしてしまってもいいかもしれません。

デバッグ情報を表示しているのはshow_info()です。msg_engineを使ってマップ名、プレイヤー名、プレイヤー座標(単位:マス)を描画しています。MessageEngineの詳しい使い方はメッセージエンジン(2008/6/28)を参照してください。draw_string()で文字列が描けるってことがわかればいいですね。

あとkana2rect.datのアルファベットと数字に半角文字も追加しました。今までは全角のアルファベットと数字しか登録してなかったので半角文字を使うとエラーになってしまいましたが今回から使えます。