【Pythonでゲームを作ろう!】Pyxelでレトロな2Dゲームを作ってみた!
Pyxelとは
ピクセルアートのレトロな2Dゲームが作れるPythonライブラリです。
・仕様
- Mac, Windows, Linux対応
- 同時に再生できる音は4音
- 使用できる色は16色のみ、定義可能な64サウンド
- Python3によるコード記述
- 256x256サイズ、3画像バンク
- 256x256サイズ、8タイルマップ
- 任意のサウンドを組み合わせ可能な8ミュージック
- キーボード、マウス、ゲームパッド
- 画像・サウンド編集ツール
pyxel/README.ja.md at master · kitao/pyxel · GitHub
ドット絵がうてるツールや、音楽を作成できるツールも入っており、ゼロからゲームを作ることができます。
シンプルな造りで初心者でも簡単にゲームを作ることができる仕様になっています。
Install
必要なもの:
- Python3.7 以上
- Homebrew
1 2 | brew install python3 sdl2 sdl2_image pip3 install -U pyxel |
pyxel/README.ja.md at master · kitao/pyxel · GitHub
サンプルを動かしてみる
サンプルをインストール
1 | install_pyxel_examples |
ファイルを指定して実行
1 2 | cd pyxel_examples python3 01_hello_pyxel.py |
レトロな雰囲気がたまらないですね!
ドット風のフォントもかわいいです。
使ってみた
ドキュメントを読みながら色々試してみました。
アセットはサンプルプロジェクトの物をお借りしています。
猫を表示させる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import pyxel class App: def __init__( self ): pyxel.init( 160 , 120 , caption = "Hello Pyxel" ) pyxel.image( 0 ).load( 0 , 0 , "assets/cat_16x16.png" ) pyxel.run( self .update, self .draw) def update( self ): if pyxel.btnp(pyxel.KEY_Q): pyxel.quit() def draw( self ): pyxel. cls ( 0 ) pyxel.blt( 75 , 45 , 0 , 0 , 0 , 16 , 16 , 16 ) App() |
pixel.init(width, height, )
1 | init(width, height, , [scale], [palette], [fps], [border_width], [border_color]) |
- width、height: 画面サイズを指定(画面の最大の幅と高さは255)。
- caption:ウィンドウのタイトルを指定
- scale:表示倍率を指定
- palette:パレット色を指定
- fps:動作フレームレートを指定
- border_width、border_color:画面外側のマージン幅と色を指定
pixel.run(update, draw)
Pyxelアプリを開始する関数。フレーム更新時にupdate関数、描画時にdraw関数を呼び出す。
猫の背景を透過
先ほど実行したサンプルでは猫の背景が透過していません。 pyxel.blt()
の[colorkey]オプションを設定することで画像を透過することができます。
pyxel.blt(75, 45, 0, 0, 0, 16, 16, 5)
Player(猫ちゃん)を動かす
キーボード操作で左右に猫ちゃんを動かしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import pyxel class App: def __init__( self ): pyxel.init( 160 , 120 , caption = "Hello Pyxel" ) pyxel.image( 0 ).load( 0 , 0 , "assets/cat_16x16.png" ) # Starting Point self .player_x = 72 self .player_y = 16 pyxel.run( self .update, self .draw) def update( self ): if pyxel.btnp(pyxel.KEY_Q): pyxel.quit() self .update_player() def update_player( self ): if pyxel.btn(pyxel.KEY_LEFT) or pyxel.btn(pyxel.GAMEPAD_1_LEFT): self .player_x = max ( self .player_x - 2 , 0 ) if pyxel.btn(pyxel.KEY_RIGHT) or pyxel.btn(pyxel.GAMEPAD_1_RIGHT): self .player_x = min ( self .player_x + 2 , pyxel.width - 16 ) if pyxel.btn(pyxel.KEY_UP) or pyxel.btn(pyxel.GAMEPAD_1_UP): self .player_y = max ( self .player_y - 2 , 0 ) if pyxel.btn(pyxel.KEY_DOWN) or pyxel.btn(pyxel.GAMEPAD_1_DOWN): self .player_y = min ( self .player_y + 2 , pyxel.height - 16 ) def draw( self ): pyxel. cls ( 0 ) # 猫ちゃんを描写 pyxel.blt( self .player_x, self .player_y, 0 , 0 , 0 , 16 , 16 , 5 , ) App() |
実行結果:
所感
簡単にレトロでかわいいゲームを作ることができてしまいました!
ドットを打てるツールや、音楽を作るツールも内臓されているので引き続き使って見ようと思います。