へたっぴpythonista

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

アイテムを動かす

前回は画面にアイテムを表示するまでを勉強したので、今回は表示したアイテムを動かして簡単なアニメーションをつくります。

アイテムを動かすためにいじるのは、アイテムの描画位置(x、y)の部分です。

前回のコードで言うとpygame.draw.rectの第三引数にあたるリスト[50,50,50,50]のうち、前二つです。

f:id:ruriohead:20130709234020p:plain

この部分を、例えばrect_x,rect_y等の値に置き換えて、その挙動を指示するコードを書くことになります。

失敗1

f:id:ruriohead:20130709235810p:plain

上のコードを実行しても図形は動きません。なぜならrect_x,rect_yがwhileループ内のローカル変数になっているからです。 このためrect_x,rect_yへの変化はループ内の処理が終わって最初の行に戻った瞬間に破棄され、次のループで再び rect_x,rect_yに50が代入されることになります。

f:id:ruriohead:20130710001551p:plain

これを避けるためにrect_x,rect_yをwhileループの外に記述し、グローバル変数として扱わせます。

成功

f:id:ruriohead:20130710001949p:plain

後はclock.tick()で描写速度を指定すればOKです。