pyxelをインストールする(pyenv python3.8.2)
最小コードの動作確認まではできた。
pyxcel
ゲーム作成ライブラリ。レトロゲームが作れる。これこれ、こういうのが欲しかった!
手順
まず要件であるPythonを入れておく。2020-03-25時点では3.7以降とあったので3.8.2を入れた。
検索。
$ pip3 search pyxel pyxel-catpointer (0.1.6) - Silly game powered by pyxel pyxel-lander (1.2.0) - Lunar Lander game tribute written in Python with Pyxel retro game engine pyxel (1.3.1) - A retro game engine for Python muser (1.2.1.2) - A musical game made using pyxel
インストール。
sudo apt install -y libsdl2-dev libsdl2-image-dev sudo -H pip3 install -U pyxel
サンプル
$ install_pyxel_examples Traceback (most recent call last): File "/usr/local/bin/install_pyxel_examples", line 6, in <module> from pyxel.examples import install File "/usr/local/lib/python3.7/dist-packages/pyxel/__init__.py", line 10, in <module> from . import core # type: ignore File "/usr/local/lib/python3.7/dist-packages/pyxel/core/__init__.py", line 43, in <module> _lib = _load_library() File "/usr/local/lib/python3.7/dist-packages/pyxel/core/__init__.py", line 40, in _load_library return cdll.LoadLibrary(lib_path) File "/usr/lib/python3.7/ctypes/__init__.py", line 434, in LoadLibrary return self._dlltype(name) File "/usr/lib/python3.7/ctypes/__init__.py", line 356, in __init__ self._handle = _dlopen(self._name, mode)
はいエラー。もしこれが成功していたらカレントディレクトリにファイルがコピーされるらしい。以下のコマンドでゲームの例が実行できるらしい。
cd pyxel_examples
python3 01_hello_pyxel.py
どうやらRaspberry PIはビルドせねばならないらしい……。よく見たら公式にも書いてあった。
ビルド
まずアンインストールしておく。
pip3 uninstall pyxel
ビルド&インストール。
sudo apt install -y libsdl2-dev、libsdl2-image-dev git clone https://github.com/kitao/pyxel.git cd pyxel make -C pyxel/core clean all pip3 install .
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Processing /tmp/work/pyxel Collecting pyinstaller (from pyxel==1.3.1) Downloading https://www.piwheels.org/simple/pyinstaller/PyInstaller-3.6-py3-none-any.whl (3.0MB) |████████████████████████████████| 3.0MB 401kB/s Collecting altgraph (from pyinstaller->pyxel==1.3.1) Downloading https://files.pythonhosted.org/packages/ee/3d/bfca21174b162f6ce674953f1b7a640c1498357fa6184776029557c25399/altgraph-0.17-py2.py3-none-any.whl Requirement already satisfied: setuptools in /home/pi/.pyenv/versions/3.8.2/lib/python3.8/site-packages (from pyinstaller->pyxel==1.3.1) (41.2.0) Installing collected packages: altgraph, pyinstaller, pyxel Running setup.py install for pyxel ... done Successfully installed altgraph-0.17 pyinstaller-3.6 pyxel-1.3.1 WARNING: You are using pip version 19.2.3, however version 20.0.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
再びサンプルを動作させようとするも、同様のエラー……。動かねーじゃん!
$ install_pyxel_examples Traceback (most recent call last): File "/usr/local/bin/install_pyxel_examples", line 6, in <module> from pyxel.examples import install File "/usr/local/lib/python3.7/dist-packages/pyxel/__init__.py", line 10, in <module> from . import core # type: ignore File "/usr/local/lib/python3.7/dist-packages/pyxel/core/__init__.py", line 43, in <module> _lib = _load_library() File "/usr/local/lib/python3.7/dist-packages/pyxel/core/__init__.py", line 40, in _load_library return cdll.LoadLibrary(lib_path) File "/usr/lib/python3.7/ctypes/__init__.py", line 434, in LoadLibrary return self._dlltype(name) File "/usr/lib/python3.7/ctypes/__init__.py", line 356, in __init__ self._handle = _dlopen(self._name, mode) OSError: /usr/local/lib/python3.7/dist-packages/pyxel/core/bin/linux/libpyxelcore.so: wrong ELF class: ELFCLASS64
サンプルは諦める。
後に再起動したら成功した。pyxelとは別件の問題だったと思われる。
install_pyxel_examples
cd pyxel_examples
python3 01_hello_pyxel.py
python3 02_jump_game.py
python3 03_draw_api.py
python3 04_sound_api.py
python3 05_color_palette.py
python3 06_click_game.py
python3 06_click_game.py
python3 07_snake.py
python3 08_triangle_api.py
キー操作
キー | 意味 |
---|---|
Esc | アプリ終了 |
Alt +1 |
スクリーンショットをデスクトップに保存する |
Alt +2 |
画面キャプチャ動画の録画開始時刻をリセットする |
Alt +3 |
画面キャプチャ動画 (gif) をデスクトップに保存する (最大30秒) |
Alt +0 |
パフォーマンスモニタ (fps、update時間、draw時間) の表示を切り替える |
Alt +Enter |
フルスクリーン表示 |
次はコード書いて動作確認しよう。
コードを書く
とりあえずREADMEにあった最小コードを書く。
vim somegame.py
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)
実行する
python3 somegame.py
エディタを起動してみる
付属エディタpyxeleditor
を起動する。画像や音声を編集できる。.pyxelres
拡張子でファイル化される。
pyxeleditor
ファイル名を指定したければ第一引数に渡す。もしファイルが既存なら読み込まれる。もしファイルが存在しなければ新規作成する。このとき拡張子pyxelres
は勝手に付与される。
pyxeleditor test
所感
起動確認できた。
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux