PygameZeroのお勉強(4)
日経ソフトウェア2020年5月号付録を見ながらお勉強
「4日目」月着陸ゲーム
まず「3日目」の画像加工プログラムが動かなかった件。
コマンドプロンプトより
> mygame03.py
で実行していたらエラーとなったが、
> python mygame03.py
とすれば期待通りに動作した。当方環境には、いくつかの pythonが入っているようで(Anacondaのものと
VSのものは認識している)、たぶん Anaconda とは別の
Pythonが起動されたものと思われるが、今は「動いた!おっけー!」で進めることにする。
・例によって、使用する画像の選定。今回も「この画像を使うと良いよ」と記事が教えてくれているので、ダウンロードして、↑で解決したサイズ変換プログラムを使って変換。この、サイズ決めにも経験が必要(たぶん画面全体のサイズとのバランスを考えて決めたと予想)だと思うので、実際に一人で作るときにはこの部分だけで平気で1時間とか使いそう。
・今回、一気にプログラムらしくなってきた。ゲーム中とそれ以外のステータス管理とかリアルタイムでキーボード入力を受け付けて動かすとか
・そういえば、ロケットの炎の描画は必ずロケット画像よりもZ-orderが下のように見えるけど、そんな指定は指定ない(駄洒落)な。
・このプログラム、draw()関数が呼ばれる度に全体を描画しているけど、全然速度や見え方(ちらつき)に問題がないなぁ。でも、もっと良い書き方がありそうな気がして、少し気持ち悪い。
そして今回、2日目の疑問が解消しました。関数内でグローバル変数の値を参照するときには、global
を使うのですか。2日目のプログラムを少しいじって、左右往復するようにしてみたもの。
import pgzrun WIDTH=400 HEIGHT=200 p=1 alien = Actor('p3_walk01' , midleft=(0,60)) def draw(): screen.clear() alien.draw() def update(): global p alien.x += p if alien.midright[0]>WIDTH or alien.midleft[0]<0: p *= -1 alien.y += 5 pgzrun.go()