[ 基本 | コマンド抜粋 | APIコード例 | プログラム例 | テンプレート | コード部品 ]
Python向けレトロゲームエンジン Pyxel を使用したゲーム作成の情報
-
Pyxelのインストール
PythonとPyxelをインストールします。 -
ピンポンゲームの作成 (First Steps in Game Development)
バーを動かしてボールを打ち返す,ゲームの基本となる処理を作ってみましょう。 -
ドット絵の表示方法 (How to display pixel art)
Pyxelの「イメージバンク」と「タイルマップ」についての説明です。 -
キャラクターの表示と移動(How to move characters)
方向キーでキャラクターを移動させる方法の説明です。 -
サンプルリソースの記事
公式サンプルリソースファイルのキャラクターを使用するときの座標メモ。
- ブログ記事(Pyxelゲーム作成の記事一覧)
特にPythonの学習初めの人向け。簡単なゲームからアクションゲーム,クラスを使ったプログラム作成へと進みます。
コマンド | 内容 |
---|---|
pip install -U pyxel |
Pyxelのインストール(アップデート)※Windows環境 |
pyxel copy_examples |
サンプルコードコピー |
pyxel edit filename |
Pyxel Editor の起動 |
pyxel package appdir srcname |
Pyxel アプリケーションファイル (.pyxapp) 作成 |
pyxel app2html your_app.pyxapp |
Pyxel アプリを HTML ファイルに変換する |
pyxel run filename |
python xxx.py と同様にPythonスクリプトファイルを実行できる |
pyxel watch dirname filename e.g. pyxel watch . mygame.py |
指定したディレクトリ内の変更を監視し,変化があった際に自動でプログラムを再実行 監視終了は実行したコマンドラインで Ctrl+C を入力 |
python -m http.server |
PythonのWebサーバー起動 http://localhost:8000/test.html のようにアクセス |
Pyxelアプリケーション実行中の特殊な操作
Windows | Mac | 内容 |
---|---|---|
Esc | Esc | アプリケーションを終了する |
Alt+1 | Option+1 | スクリーンショットをデスクトップに保存する |
Alt+2 | Option+2 | 画面キャプチャ動画の録画開始時刻をリセットする |
Alt+3 | Option+3 | 画面キャプチャ動画をデスクトップに保存する |
Shift+Alt+1/2/3 | Shift+Option+1/2/3 | イメージバンク 0,1,2 をデスクトップに保存する |
Shift+Alt+0 | Shift+Option+0 | 現在のカラーパレットをデスクトップに保存する |
Windows | Mac | ゲームパッド | 内容 |
---|---|---|---|
Alt+8 | Option+8 | A+B+X+Y+DL | 画面の拡大方法を最大と整数倍で切り替える |
Alt+9 | Option+9 | A+B+X+Y+DR | 画面モード (Crisp/Smooth/Retro) を切り替える |
Alt+0 | Option+0 | A+B+X+Y+DU | パフォーマンスモニタ (fps,update 時間, 8000 draw 時間) の表示を切り替える |
Alt+Enter | Option+Enter | A+B+X+Y+DD | フルスクリーン表示を切り替える |
APIの呼び出しコード例です。
No. | ソースコード | 内容 | 記事 |
---|---|---|---|
1 | じゃんけんゲーム | クリック位置の取得 | |
2 | アクションゲーム1 | 忍者のキャラクターをジャンプさせます。 タイルマップの使用 |
|
3 | アクションゲーム2 | ペンギンのキャラクターがステージクリアを目指します。 画面スクロール,ゲームの進行管理 |
|
4 | 三目並べ | クラスを使ったプログラム | |
5 | シューティングゲーム | 公式サンプルプログラムを横方向のSTGに改造します | |
6 | 迷路ゲーム1 | ウサギロボがお化けを避けてゴールを目指します 上下左右移動のアニメーション(クラス未使用版) |
|
7 | 迷路ゲーム2 | アリスが迷路のゴールを目指します 迷路の自動生成 2点間の距離を調べる |
|
8 | 日本語表示例 | ビットマップフォントの表示 日本語表示は標準機能でできるようになりました 記事参照→ |
No. | リンク | 内容 |
---|---|---|
1 | Appクラスのひな形 | Appクラスのコード |
2 | テストプログラム用 | クラスなし簡易版 |
3 | スクリーンショット用 | show()で1回だけ表示 |
4 | イメージバンク画像出力 | イメージバンクをPNGファイルで出力 |
5 | GIFアニメーションファイル用 | flip()で表示ループ |
乱数(整数)
pyxel.rndi(1,100)
マウスカーソル表示
pyxel.mouse(True)
マウス座標取得
x = pyxel.mouse_x
y = pyxel.mouse_y
方向キー入力 (キー記述例 )
if pyxel.btn(pyxel.KEY_UP) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_UP):
if pyxel.btn(pyxel.KEY_DOWN) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_DOWN):
if pyxel.btn(pyxel.KEY_LEFT) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_LEFT):
if pyxel.btn(pyxel.KEY_RIGHT) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_RIGHT):
if pyxel.btn(pyxel.KEY_W) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_UP):
if pyxel.btn(pyxel.KEY_S) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_DOWN):
if pyxel.btn(pyxel.KEY_A) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_LEFT):
if pyxel.btn(pyxel.KEY_D) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_RIGHT):
スペースキー入力
if pyxel.btnp(pyxel.KEY_SPACE) or pyxel.btnp(pyxel.GAMEPAD1_BUTTON_A):
if pyxel.btnp(pyxel.KEY_SPACE,15,15) or pyxel.btnp(pyxel.GAMEPAD1_BUTTON_A,15,15):
マウスクリック
if pyxel.btnp(pyxel.MOUSE_BUTTON_LEFT) or pyxel.btnp(pyxel.GAMEPAD1_BUTTON_A):
タイルマップ取得,設定
xidx = x //8
yidx = y //8
tile = pyxel.tilemap(0).pget(xidx,yidx)
pyxel.tilemap(0).pset(xidx,yidx, (1,0) )
タイルマップ表示
pyxel.camera()
pyxel.bltm(0,0, 0, self.scroll_x,self.scroll_y, pyxel.width,pyxel.height, 0)
pyxel.camera(self.scroll_x,self.scroll_y)
イメージ表示 (透明色)
pyxel.blt(self.x, self.y, 0, u,v, self.w, self.h, 0)
効果音再生
pyxel.play(ch,sNo)
BGM再生・停止
pyxel.playm(msc, loop=True)
pyxel.stop(ch)
シーン番号
SNO_TITLE = 0
SNO_STAGESET = 10
SNO_PLAY = 11
SNO_SFINISH = 12
SNO_GAMEOVER = 13
SNO_END = 20
シーン分岐
if SNO_TITLE == self.scene:
pass
elif SNO_STAGESET == self.scene:
pass
elif SNO_PLAY == self.scene:
pass
elif SNO_SFINISH == self.scene:
pass
elif SNO_GAMEOVER == self.scene:
pass
elif SNO_END == self.scene:
pass
else:
pass
[ 基本 | コマンド抜粋 | APIコード例 | プログラム例 | テンプレート | コード部品 ]
E-mail benkyoubox@gmail.com