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