へたっぴpythonista

ド素人pythonistaとして、日々の学習成果や気づいたことについて書きます。

pygameを使ってみよう

インストールしたっきり触っていなかったので今日はpygameをいじってみる。

ウィンドウを作る

f:id:ruriohead:20130626171113p:plain

まずpygame全体をimportして、その中ローカル属性からトップレベル全体を取り出す。

次いでpygame.imit()でpygame全体を初期化する。多分複数のモジュールによって構成されたスクリプトとかで、インポートミス等が起きるのを防ぐためだろう。

5,6行目はそれぞれ、メインウィンドウのサイズ設定とウィンドウのタイトル設定。ここまで入力して走らせると、

f:id:ruriohead:20130626172841p:plain

これでメインウィンドウが完成した。

文字やイメージを表示する

さて、作ったウィンドウに文字やイメージを表示してみる。

f:id:ruriohead:20130626181153p:plain

まずはテキスト。

テキストを表示するために、始めに7行目の様にフォントを指定する。

pygameがすでに持っているフォント情報を適用するにはSysFont、自分で作成したり、ネット等でダウンロードしたフォント情報を適用するにはFontと入力します。()内の第一因数は使用するフォントの名前(または場所)、第二因数は文字サイズになる。また、第一因数をNoneに指定するとpygameデフォルトのフォントが適用される。

フォントを指定したら、8行目のようにテキストをレンダリング(画像・映像化)する。()内は第一因数がレンダリングするテキスト、第二因数がアンチエイリアス(文字を滑らかに出力する)の有無、第三因数が色(RGB方式)となっている。

 

次に画像。

画像は9行目のようにファイルの位置を指定すればいい。

convert()は画像ファイルのpygame上でのフォーマット(≠画像ファイルそのもののフォーマット)をプログラムを動作させているPCの環境に合わせるために必要。これが無いとゲームプレイ中に画像が表示されるたびに一々フォーマットを合わせなくてはいけないので、スムーズな描画ができなくなるらしい。だから、わざとでない限り付け加えておくべきだろう。

また、使用する画像がアイコン等のように透明な部分を持つものであった場合は、convert_alpha()と書けば、その透明部分が透明なまま画像がロードされる。

 

 

以上の処理が済んだら、いよいよ出力。ボディ部分を書いていく。

ボディはwhile True: ,while 1:等の常に正しいwhileループを利用して無限ループを形成する形で書くことになる。以降このループの中に動作に関するコードを記載していくことになる。

テキストや画像の出力にはscreen.blit(file,(x,y))を使う。第一因数はレンダリングしたテキスト、あるいは画像を、第二因数には画面左上端を(0,0)とする出力位置を指定する。

最後にpygame.display.flip()、またはpygame.display.update()と書けば完成。

f:id:ruriohead:20130626203355p:plain