LoginSignup
6
11

More than 5 years have passed since last update.

Arduino + カラー液晶で落ち物ゲームを作る

Posted at

概要

前回は、モノクロ液晶で簡単なゲームを作ってみました。

今回はそこから進化して、液晶がカラーになりました!

折角カラーなので、色を使った落ち物ゲームを作ってみたいと思います。

作るゲーム

下記のようなゲームにしてみたいと思います。

  • w6 x h12の盤面
  • 2個のピースが繋がったブロックが落ちてくる
  • 色は5色
  • 同色のピースを縦・横に4つ以上つなげると消える
  • 連続して消える(チェイン)と、チェイン数に応じてスコアが2^(chain-1) * 10 ずつ加算される

使用材料

前回とカラー液晶以外は全く同じです。
それにしても、1個300円は安い・・。前回のモノクロ液晶の半分以下です。。。

使ったカラー液晶について (ST7735)

使用したカラー液晶には、ST7735というICが積まれていました。
ST7735のライブラリはいくつか有るようなのですが、
今回は、sumotoyさんが作ったライブラリを利用しました。
ただ、128x128のこの液晶向けのコンフィグがなかったので、
コンフィグを追加して利用しています。
githubはこちら

Arduinoに追加する場合は、githubからZIPでダウンロードし、

[スケッチ] -> [ライブラリをインクルード] -> [.ZIP形式のライブラリをインストール] 

でダウンロードしたZIPを選べばOKです。

回路図

ハンダ付けをするときのために、簡単な回路図を作っています。
ソフトには水魚堂さんのBSch3Vを使わせていただいております。
直感的に操作ができ、とても便利です。

今回は下記のようになりました。
※回路図としては、記法的に不正確かもしれませんが、ご了承下さい。。

color-blockgame-LCD.png

液晶とタクトスイッチを、atmega328pにつなげただけですね。
ちなみに単三電池2本で動かすので、ロジックレベルコンバータは不要です(開発中のブレッドボードでは使いましたけどね!)。

※本回路図エディタのファイルも、落ち物ゲームのリポジトリに入れております。

ソースコード

githubにあげています

今回は、
・Arduino部分
・View部分
・ゲーム処理部分
で分割してみました。

モダンなC++の機能が使えるのは、
普段LLを使っている身としてはありがたいです。

完成品

こんな感じのゲームになりました。

arduino + カラー液晶で落ち物ゲームを作る

感想

カラー液晶の発色を見た時に、子供の頃初めてゲームボーイカラーの液晶を見た時のことを思い出しました。
当時は、ゲームボーイカラーで表示されたスライム(ドラクエモンスターズ1です!)の青さに、本当にとても感動したものです。。

ところでゲームボーイカラーのスペックは、下記のようなものだったようです。
wikipedia:ゲームボーイカラー#基本仕様から引用

  • CPU:カスタムZ80 4MHz / 8MHz(カラー専用カートリッジ用の倍速モード)
  • RAM : 32kバイト(カートリッジ側に128kバイトまでの増設メモリを搭載可能)
  • VRAM:16kバイト
  • ROM:最大64Mビット(=8Mバイト、発売されたソフトの実績値)
  • サウンド:ステレオ、PSG音源4チャンネル (波形メモリ1音、矩形波2音、ノイズ1音)
  • 画面:TFT液晶ディスプレイ(160×144ドット、32768色中最大56色表示可能)

それに対してarduino仕様のatmega328pは、

  • CPU: 8bit RISC 16MHz
  • RAM: 2kバイト
  • ROM: 32kバイト

CPUは速いですが、RAMは1/16、ROMは 1/512です。
意外とゲームボーイカラーって、RAM多かったんですね。

ということで、カラー液晶を使った工作でした!

さて、次回は「音」を出してみたいと思います!

6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11