PygameZeroのお勉強(3)

日経ソフトウェア2020年5月号付録を見ながらお勉強

「3日目」迷路ゲーム(背景描画とキャラクタ操作)

・画像ファイルの用意。この過程が私はすごく苦手。できあがりをイメージして部品を選ぶことができないんです。今回は素材集から、記事で指定されたものをコピーして、リネーム(例によって
images フォルダの下に小文字で←大文字不可)

・画像加工ライブラリ、pip install Pillow しようとしたら、既に入っていた模様。以前入れたのかな。Anacondaに含まれていたのかな。
→しかし、画像変換プログラム(下記)を実行したところ、PILがないとエラー。

from PIL import Image

img = Image.open('./images/alien.png')
img_resized = img.resize( (70,70) )
img_resized.save('./images/player.png')

Anaconda を使っている時に pip ってすごく相性が悪いらしい(本来は conda
コマンドでパッケージ管理すべき)。軽く調べたけど解決には至らず、ここは単に
70x70の画像に変換したいだけだったので、boxItemAlt.png を player.pngにして続行することにした。

ちなみにライブラリ追加時のエラー:

ERROR conda.core.link:_execute_actions(337): An error occurred while
installing package 'anaconda::tqdm-4.44.1-py_0'.
CondaError: Cannot link a source that does not exist.
C:\usr\local\Anaconda3\Scripts\conda.exe
Running `conda clean --packages` may resolve your problem.
Attempting to roll back.


・リストとタプル
 リスト:a= [xxx,xxx,xxx] 変更可
 タプル:b=(xxx,xxx,xxx) 変更不可

・PygameZeroドキュメント:イベントのフック
https://pygame-zero.readthedocs.io/ja/latest/hooks.html


イベントハンドラ 「def on_key_down(key):」
・if key == keys.UP: のように押下キーにより条件分岐可能
・上端、右辺、下辺、左辺それぞれに上右下左キー押下時は何もしない判断をした上で、それ以外の時に、自機のそれぞれのlocationに相当する位置(xまたはyに1を加減した座標)にブロックがある(mapdata[]の当該座標が1である)場合には移動させない。全体を再描画。


画面上の迷路内を、キー操作に応じて自機が動くだけなのだけど、すごく楽しいですね。こういう単純に楽しい!という感覚は久しぶりかも。
 一方で、そこそこ業界歴は長いので、この4方向への条件分岐の処理記述面倒くさく感じたりもしています。パターン化してまとめられそうだな、と思ったり。(たぶん条件分岐内では
新しい[x,y]の増減値だけを求めて、計算は条件分岐抜けたところでやる、とかしたいかも。・・・いやそう簡単でもないな。まぁいいや。


今回は、(自分が記事指定の環境と異なる Anacondaを使っていたために)環境の差異で苦労。結構時間がかかってしまった(しかも根本的には解決していない)。