PygameZeroのお勉強(2)
日経ソフトウェア2020年5月号付録を見ながらお勉強
「2日目」キャラを動かしてみる
昨日の、
alien = Actor('alien01_2' , center=(100,100))
center 以外に、
top, mid, bottom と left, right の組み合わせ(topleft, midrightのように)と、
midtop, center, midbottom がある。
defとかインデントとか命名規則とかは、知っていたり、まぁそうだろうなと思うことだったので、OK.
draw() 関数をどこからも明示的に呼び出していないけれども、pgzrun.go()
の中の処理で、draw()を探して、あれば実行してくれる、という感じなのかな。そういう「pygame zeroで決められた
名前固定の関数」にどのようなものがあるのか分かるといいな。今後のレッスンで出てくるのかな。
(とりあえず draw() と update() があることは分かった)
キャラクタを左から右に動かすサンプル。
import pgzrun WIDTH=400 HEIGHT=200 p=1 alien = Actor('p3_walk01' , midright=(0,100)) def draw(): screen.clear() alien.draw() def update(): alien.x += p #if (alien.x>=WIDTH): # p *= -1 pgzrun.go()
コメントアウトしてある部分を記述して、右端に着いたら反転を試みたが、以下のエラー。コメント部分を無効にしておけば p
自体は見えているようなので、なぜ計算式が含まれるとエラーになるのかは、少し考えたが分からずじまい。まぁいいや。今は。
File "mygame02.py.txt", line 16, in update alien.x += p UnboundLocalError: local variable 'p' referenced before assignment