ブロック崩しゲームを作ってみた ~ Raspberry Pi Pico

前回の投稿でスカッシュゲームを扱いましたが、機能を拡張してブロック崩しゲームを作成しました。(今回はソースはなしで、実行形式になります)

1.TFT液晶の接続

ILI9341ドライバで動くTFT液晶とRaspberry Pi Picoを、ジャンパーワイヤで接続します。接続方法は、前に投稿した記事と同じです。左がTFT液晶、右がRaspberry Pi Picoです。

GND -> GND
VCC -> 5V OUT
SCL -> GP18
SDA -> GP19
RES -> GP13
DC -> GP12
CS -> GP11
LCD -> 3.3V OUT
MISO -> GP16

今回、ネットで流通しているRaspberry Pi Pico用ゲームのGPIO接続に準拠しました。これにより、配線を変えずに様々なゲームができるようになります。また、向きも合わせて、180度回転させています。

created by Rinker
Raspberry Pi
¥1,780 (2024/09/20 00:46:43時点 Amazon調べ-詳細)

2.ゲームパッドの製作と接続

今まで使ってきたブレッドボードでは、これ以上ボタンを配置できません。今回のブロック崩しであれば2ボタンで構わないのですが、他のゲームを考えると6ボタンは欲しいです。

そこで、簡単なゲームパッドを作成します。基板とタクトスイッチ、ジャンパーピンを配置してゲームパッドを作成します。キーには、上下左右とスタート、発射の6種類を用意しました。これは、他で出ているゲームに対応させたものです。タクトスイッチとRaspberry Pi Picoの接続は、以下のとおりです。

GP0 -> 上キー
GP1 -> 左キー 今回使う
GP2 -> 右キー 今回使う
GP3 -> 下キー
GP4 -> STARTキー
GP5 -> 発射キー

タクトスイッチの反対側はGNDに接続します。

created by Rinker
KKHMF
¥599 (2024/09/19 16:00:10時点 Amazon調べ-詳細)

3.プログラムのインストール

実行形式(バイナリファイル)は、簡単に作成できます。

今回はソースの提供は行わず、実行形式ファイルをダウンロードしてRaspberry Pi Picoのフォルダに置くだけです。

ブロック崩し実行形式:breakout.uf2

Raspberry Pi Picoの「BOOTSEL」ボタンを押しながら、PCにUSB接続します。すると、PCではRaspberry Pi PicoをUSBマスストレージとして認識するので、ルートフォルダに実行形式の「breakout.uf2」ファイルをセットします。

これで、もうゲームを遊ぶことができます。やってみると、意外と全部消すのが難しい場合もあって楽しめました。また、ラケットのボールを跳ね返すロジックが、単純に跳ね返すだけのままです。ここは、ラケットの当たった位置や、ラケットの動かした方向によってボールの跳ね返り方を変えたいと思っています。

ボールがブロックに当たった時の処理が、思ったよりも良く動いてくれました。当たる角度が変わっても大丈夫なように作ってあります。ブロックは15個ありますが、ブロッククラスを15個インスタンス化したもので、数はいくらでも増やせます。この辺が、クラスの便利なところですね。

まあ、スコアもないし、ブロックパターンも同じなので飽きちゃうと思いますが、基本的なゲームプログラミングを得るために作成したものなので、ご了承ください。

4.他で提供されているゲームをインストールしてみる

他で、レジェンドゲームを提供しているサイトがあります。以下のサイトがお気に入りです。

実際にやってみると、Raspberry Pi Picoで往年のゲームが蘇っており、素晴らしいです。

5.今後も何か作っていきたい

ゲームを作って来ましたが、当初はすぐやめてしまうだろうと思っていました。しかしながら、いつもの電子工作と違って、ロジックをいかに最適化するかを考えるのが楽しかったです。これからグラフィックの重ね合わせが必要になってきますが、スプライトが思ったような動作をしていないので、対策を考えなくてはなりません。こういう、問題の解決作業がゲームでは頻繁に起こるので、プログラムが楽しいのですね。

少しずつ、問題をクリアしていき、次回作を作りたいと思います。急がないですけれどね。