lisz-works

技術と興味の集合体

レトロゲーライブラリpyxelで遊ぶことはじめ

【スポンサーリンク】

pyxel

Pythonのレトロゲー作成ライブラリ「pyxel」で遊んでみました!

なかなか楽しいので、まずはいろいろ描画して遊んでみました!

入手先

GitHubかpipで入手することができます。

ここか

github.com

これ

pip install pyxel

最初のサンプル

最初は提示されているサンプルがあるので、それを動かします。

# 引用: https://github.com/kitao/pyxel
import pyxel

pyxel.init(160, 120)

def update():
    if pyxel.btnp(pyxel.KEY_Q):
        pyxel.quit()

def draw():
    pyxel.cls(0)
    pyxel.rect(10, 10, 20, 20, 11)

pyxel.run(update, draw)

コレを実行してみると、緑の四角が表示されます。

init()

まずinit()ウィンドウのサイズを設定しています。

この場合、

  • 幅: 160
  • 高さ: 120

のウィンドウを設定しています。

update()

フレーム更新時に呼ぶ「update()」を作成しています。

ここでは、「Qキー」を押されたら、ウィンドウを閉じるようになっています。

コレのようにキーで分岐していけば、キー操作が作成できそうですね!

draw()

描画時に呼ぶ「draw()」を作成しています。

draw()ではまず、cls()で画面をクリアします。

そしてなんらかの描画処理を書いていきます。

cls()

この画面クリアを行わないと、描画をどんどん重ねていく形になります。

例えば、あるドットが右に動いて行く処理を作ったとします。
コレを実現するためには、

  1. 画面をクリア
  2. 1つ右にドットを描画
  3. 画面をクリア
  4. 1つ右にドットを描画
  5. (繰り返し)

とすることで、更新のたびに右に動いていくよう描画してもらいます。

しかし、cls()をしないと……更新のたびに消さずに書く……
つまりどんどんドットが追加されていき、線状になってしまいます。

cls()の引数はカラーパレットの色番号です。

カラーパレットの色番号って?

pyxelでは16色の色がカラーパレットに登録されています。
こんな感じ。

カラーパレット

引用: pyxel/README.ja.md at master · kitao/pyxel · GitHub

その番号を指定することで、色を指定します。

なので、

  1. 画面を消す
  2. 図形やテキストを描画する

というときは、このカラーパレットの番号を指定して、「その色の何か」を描画してもらいます。

そういう意味でいうと、cls()は画面のクリアではなく、「指定色ですべて塗りつぶす」という処理になります。

ract()

四角を描画します。

四角の座標

引数は、x, y, w, hの各座標と、色番号です。

サンプルの場合「11」なので緑になります。

run()

アプリを開始します。

引数に、フレーム更新時の処理と、描画時の処理を渡してあげます。
コレを実行してもらうことで、ゲームが動作します。

フレームカウントを表示してみる

pyxel内のフレームを見ることで、周期をチェックすることができます。

pyxel.frame_count

でフレームの値を知ることができます。

コレをtext()で表示することで、フレームを表示することができます。
試しに画面右上に表示してみました。

def draw(self):
    pyxel.cls(0) # 画面をcolでクリア
    pyxel.text(pyxel.width - 30, 0, str(pyxel.frame_count), 7)

あとがき

ということでPythonのレトロゲーライブラリ「pyxel」についてでした。

ほんと最初のサンプルレベルの話ですが……

でもこの短いコードで、ウィンドウの表示から図形描画までできます。

次はもう少し色々したいと思いますー