システム,リソース,入力
バージョン:Pyxel 1.9版
- Pyxel APIリファレンス のAPI実行例です。
- 下記import文でPyxelをインポートしたときのAPIの呼び出し記述になります。
import pyxel- 説明中の「型」は数値や文字列の種別を示しています。
| 型 | 内容 |
|---|---|
| i32 | 符号付き整数型(負の値あり) |
| u8 u32 |
符号なし整数型(負の値なし) |
| f64 | 浮動小数点数(小数の値) |
| str | 文字列 |
| bool | True/False |
- コード例で使用しているリソースファイル(sample.pyxres)は公式サイトからDownloadできます。
| 変数名 | 型 | 説明 | 記述例 |
|---|---|---|---|
| width | u32 | 画面の幅 | pyxel.width |
| height | u32 | 画面の高さ | pyxel.height |
| frame_count | u32 | 経過フレーム数 | pyxel.frame_count |
sw = pyxel.width
sh = pyxel.height
print("width=",sw,"height=",sh) # print文はIDLEシェル等への出力でデバッグに利用できますpyxel.text(10, 10, "Hello, Pyxel!", pyxel.frame_count % 16)Pyxel アプリケーションを初期化します。
init(width, height, [title], [fps], [quit_key], [display_scale], [capture_scale], [capture_sec])
| 引数 | 型 | 説明 | 省略時の値 |
|---|---|---|---|
| width | u32 | 画面の幅 | - |
| height | u32 | 画面の高さ | - |
| title | str | ウィンドウタイトル | "Pyxel" |
| fps | u32 | 動作フレームレート | 30 |
| quit_key | u32 | アプリケーション終了キー(キー記述例) | pyxel.KEY_ESCAPE |
| display_scale | u32 | 画面表示の倍率 | 画面サイズから算出 |
| capture_scale | u32 | 画面キャプチャの倍率 | 2 |
| capture_sec | u32 | 画面キャプチャ動画の最大録画時間 | 10 |
・アプリケーション初期化 画面サイズとタイトル指定
pyxel.init(240, 160, title="Pyxel App")・アプリケーション初期化 動作フレームレート60fps,終了キー(なし)に指定
pyxel.init(240, 160, title="Pyxel App", fps=60, quit_key=pyxel.KEY_NONE)・画面表示の倍率,画面キャプチャの倍率,画面キャプチャ動画の録画時間指定
pyxel.init(128, 64, display_scale=5,capture_scale=5,capture_sec=10)Pyxel アプリケーションを開始、フレーム更新時にupdate関数、描画時にdraw関数を呼びます。
run(update, draw)
| 引数 | 型 | 説明 |
|---|---|---|
| update | 関数 | 更新時に実行する関数名を指定 |
| draw | 関数 | 描画時に実行する関数名を指定 |
import pyxel
pyxel.init(64, 64)
def update():
return
def draw():
pyxel.cls(0)
return
pyxel.run(update, draw)画面を表示してEscキーが押されるまで待機
import pyxel
pyxel.init(64, 64)
pyxel.text(10, 10, "Test", 7)
pyxel.show()画面を 1 フレーム更新(Webでは使用不可)
import pyxel
pyxel.init(64, 64)
while(True):
pyxel.cls(0)
pyxel.text(10,10, "Test", pyxel.frame_count % 16)
pyxel.flip()Pyxel アプリケーションを終了
def update():
if pyxel.btn(pyxel.KEY_Q):
pyxel.quit()
returnリソースファイル (.pyxres) を読み込みます。
load(filename, [image], [tilemap], [sound], [music])
| 引数 | 型 | 説明 |
|---|---|---|
| filename | str | リソースファイルのパス |
| image | bool | イメージバンクを読み込まない場合 False を指定 |
| tilemap | bool | タイルマップを読み込まない場合 False を指定 |
| sound | bool | サウンドを読み込まない場合 False を指定 |
| music | bool | ミュージックを読み込まない場合 False を指定 |
・同じフォルダにある sample.pyxres を読み込む例
import pyxel
pyxel.init(64, 64)
pyxel.load("sample.pyxres")
def update():
return
def draw():
pyxel.cls(0)
pyxel.blt(16,8, 0, 8,0, 8,8, 0)
return
pyxel.run(update, draw)・リソースタイプ (image/tilemap/sound/music) にFalseを指定すると,そのリソースは読み込まれない。
# image True
# tilemap False
# sound True
# music True の例
pyxel.load("sample.pyxres",True,False)リソースファイル (.pyxres) を保存します。(上級者向けAPI)
save(filename, [image], [tilemap], [sound], [music])
| 引数 | 型 | 説明 |
|---|---|---|
| filename | str | リソースファイルのパス |
| image | bool | イメージバンクを保存しない場合 False を指定 |
| tilemap | bool | タイルマップを保存しない場合 False を指定 |
| sound | bool | サウンドを保存しない場合 False を指定 |
| music | bool | ミュージックを保存しない場合 False を指定 |
・同じフォルダに newfile.pyxres を作成する例(ファイルが既にあれば更新)
pyxel.save("newfile.pyxres")Note
Pyxelのリソースファイルの拡張子は .pyxres ですが,構造はzipファイルのフォーマットで作成されています。
リソースファイルの拡張子を .zip に変更すると展開して内容を確認できます。
| 変数名 | 型 | 説明 | 記述例 |
|---|---|---|---|
| mouse_x | i32 | 現在のマウスカーソルx座標 | pyxel.mouse_x |
| mouse_y | i32 | 現在のマウスカーソルy座標 | pyxel.mouse_y |
| mouse_wheel | i32 | 現在のマウスホイールの値 | pyxel.mouse_wheel |
※Pyxel Web では mouse_x,mouse_y でスマホタッチ位置を取得可
import pyxel
pyxel.init(64, 64)
pyxel.mouse(True) # マウスカーソル表示指定(表示無しでも座標は取得可能)
def update():
# update()内で座標判定処理などに使う例
x = pyxel.mouse_x
y = pyxel.mouse_y
return
def draw():
pyxel.cls(0)
pyxel.text(4,4, str(pyxel.mouse_x)+","+str(pyxel.mouse_y),7)
return
pyxel.run(update, draw)import pyxel
pyxel.init(64, 64)
def update():
return
def draw():
pyxel.cls(0)
pyxel.text(4,4, str(pyxel.mouse_wheel),7)
return
pyxel.run(update, draw)keyが押されていたらTrue、押されていなければFalseを返します。
btn(key)
| 引数 | 型 | 説明 |
|---|---|---|
| key | u32 | 判定するキー(キー記述例) |
| 戻り値 | 型 | 説明 |
|---|---|---|
| キー状態 | bool | 押している間 True |
import pyxel
pyxel.init(64, 64)
flg = False
def update():
global flg
if pyxel.btn(pyxel.KEY_SPACE):
# キーが押されているときの処理
flg = True
else:
# キーが押されていないときの処理
flg = False
return
def draw():
pyxel.cls(0)
pyxel.text(4,4, str(flg),7)
return
pyxel.run(update, draw)そのフレームにkeyが押されたらTrue、押されなければFalseを返します。holdとrepeatを指定すると、holdフレーム以上ボタンを押し続けた時にrepeatフレーム間隔でTrueが返ります。
btnp(key, [hold], [repeat])
| 引数 | 型 | 説明 |
|---|---|---|
| key | u32 | 判定するキー(キー記述例) |
| hold | u32 | 押し続け判定フレーム数 |
| repeat | u32 | Trueを返すフレーム間隔 |
| 戻り値 | 型 | 説明 |
|---|---|---|
| キー状態 | bool | 押した最初の瞬間だけTrue holdとrepeatを指定するとSTGなどで押し続けて連射ができる |
import pyxel
pyxel.init(64, 64)
cnt = 0
def update():
global cnt
if pyxel.btnp(pyxel.KEY_SPACE) :
cnt += 1
return
def draw():
pyxel.cls(0)
pyxel.text(4,4, str(cnt),7)
return
pyxel.run(update, draw)import pyxel
pyxel.init(64, 64)
cnt = 0
def update():
global cnt
if pyxel.btnp(pyxel.KEY_SPACE,15,15) :
cnt += 1
return
def draw():
pyxel.cls(0)
pyxel.text(4,4, str(cnt),7)
return
pyxel.run(update, draw)そのフレームにkeyが離されたらTrue、離されなければFalseを返します。
btnr(key)
| 引数 | 型 | 説明 |
|---|---|---|
| key | 定義値 | 判定するキー(キー記述例) |
| 戻り値 | 型 | 説明 |
|---|---|---|
| キー状態 | bool | 押している間 False , 押されたキーが離されたら True 押す前(通常状態)は False |
import pyxel
pyxel.init(64, 64)
cnt = 0
def update():
global cnt
if pyxel.btnr(pyxel.KEY_SPACE) :
cnt += 1
return
def draw():
pyxel.cls(0)
pyxel.text(4,4, str(cnt),7)
return
pyxel.run(update, draw)visibleがTrueならマウスカーソルを表示し、Falseなら非表示にします。マウスカーソルが非表示でも座標は更新されます。
mouse(visible)
| 引数 | 型 | 説明 |
|---|---|---|
| visible | bool | 表示させる場合 True |
pyxel.mouse(True) # 以降False指定されるまで表示Keycodeの定義値です。 (詳細はキー定義一覧参照)
| コード例 | キー |
|---|---|
| pyxel.KEY_SPACE | スペースキー |
| pyxel.KEY_RETURN | Enterキー |
| pyxel.KEY_0 | 数字キー 0 |
| pyxel.KEY_A | 文字キー A |
| pyxel.KEY_UP | 上方向キー |
| pyxel.KEY_DOWN | 下方向キー |
| pyxel.KEY_LEFT | 左方向キー |
| pyxel.KEY_RIGHT | 右方向キー |
| pyxel.MOUSE_BUTTON_LEFT | マウス左ボタン スマホ画面タップ(Web) |
| pyxel.MOUSE_BUTTON_RIGHT | マウス右ボタン |
| pyxel.KEY_KP_1 | テンキー数字 1 |
| pyxel.KEY_KP_ENTER | テンキーEnterキー |
| pyxel.GAMEPAD1_BUTTON_DPAD_UP | バーチャルゲームパッド上 |
| pyxel.GAMEPAD1_BUTTON_DPAD_DOWN | バーチャルゲームパッド下 |
| pyxel.GAMEPAD1_BUTTON_DPAD_LEFT | バーチャルゲームパッド左 |
| pyxel.GAMEPAD1_BUTTON_DPAD_RIGHT | バーチャルゲームパッド右 |
| pyxel.GAMEPAD1_BUTTON_A | バーチャルゲームパッドA |
| pyxel.GAMEPAD1_BUTTON_B | バーチャルゲームパッドB |
| pyxel.GAMEPAD1_BUTTON_X | バーチャルゲームパッドX |
| pyxel.GAMEPAD1_BUTTON_Y | バーチャルゲームパッドY |