[ 基本 | コマンド抜粋 | 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 ファイルに変換する |
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 | 画面キャプチャ動画をデスクトップに保存する |
Alt+0 | Option+0 | パフォーマンスモニタ (fps、update 時間、draw 時間) の表示を切り替える |
Alt+Enter | Option+Enter | フルスクリーン表示を切り替える |
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