プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

M5Stack Japan Creativity Contest 2023に応募しました

今年も応募しました

www.switch-science.com

応募した作品は以下です。
protopedia.net
www.youtube.com

昨年ゲームを作りましたが、今年もゲームを作りました。
今年は一ひねり欲しい、と思い既存ではないものを作ることにしました。
そこで、ブレストとしてChatGPTを活用しましたが、その過程を紹介したいと思います。

ブレストの過程紹介

Q.
m5stack creative contestに応募するアイデアを考えて

A.
M5Stack Creative Contestに応募するアイデアを考えるには、まずM5Stackが提供するハードウェアとソフトウェアの機能と特徴を知ることが大切です。
M5Stackは、ESP32ベースのマイクロコントローラーを搭載し、液晶ディスプレイ、Wi-FiBluetooth、SDカードスロット、
加速度センサー、ジャイロスコープ、マイク、スピーカー、ボタンなど多様な機能を備えたスタック型モジュールです。

以下は、M5Stack Creative Contestに応募するアイデアの例です:

1. スマートウォッチ
M5Stackの小型液晶ディスプレイ、加速度センサー、ジャイロスコープを使用して、スマートウォッチを作成します。
スマートフォンとの接続を可能にするWi-FiBluetoothを活用して、通知や健康データの取得などの機能を実装します。

2. AIアシスタントロボット
M5Stackのマイクとスピーカーを使用して、音声認識音声合成を実装したAIアシスタントロボットを作成します。
ESP32の強力な処理能力を活用して、自然な会話をすることができるようにします。

3. IoTセンサー監視システム
M5StackのWi-Fiと加速度センサーを使用して、建物の地震や揺れを検知するIoTセンサー監視システムを作成します。
センサーデータをクラウド上のサーバーに転送し、可視化することで、建物の耐震性を向上させることができます。

4. ゲーム機
M5Stackの液晶ディスプレイ、ボタン、SDカードスロットを使用して、ポータブルなゲーム機を作成します。
ESP32の処理能力を活用して、高速なグラフィックス処理や音声合成を実現し、様々なゲームをプレイすることができます。

以上のように、M5Stack Creative Contestには多様なアイデアが応募できます。
自分が得意とする分野や興味を持っている分野に着目して、独自のアイデアを出してみると良いでしょう。

Q.
もう少し珍しいアイデアは無いですか?

A.
もちろんです!以下は、より珍しいM5Stack Creative Contestへのアイデアの例です:

1. ドローン用自己位置推定システム
M5Stackの加速度センサー、ジャイロスコープ、カメラを使用して、ドローンの自己位置推定システムを作成します。
ESP32の処理能力を活用して、リアルタイムでドローンの位置を特定することができます。

2. 気象観測ローバー
M5Stackの液晶ディスプレイ、温湿度センサー、気圧センサー、Wi-Fiを使用して、気象観測ローバーを作成します。
ローバーを屋外に置き、リアルタイムで温度、湿度、気圧などの気象データを取得し、クラウド上にアップロードすることができます。

3. スマートリモコン
M5Stackの赤外線送信機能を使用して、スマートリモコンを作成します。
ESP32の処理能力を活用して、スマートフォンとの接続を可能にし、自分が持つ家電製品の赤外線リモコンの操作をスマートフォンで行うことができます。

4. ARカメラ
M5Stackのカメラと液晶ディスプレイを使用して、ARカメラを作成します。
ESP32の処理能力を活用して、リアルタイムでカメラ映像を解析し、ARオブジェクトを表示することができます。

以上のように、M5Stack Creative Contestにはさまざまなアイデアがあります。
自分が得意とする分野や、興味を持っている分野に着目して、自分なりのアイデアを出してみると良いでしょう。

電子工作をやってみたいときの題材としては悪くないと思いますが、ありきたりです。
もう少しテーマを絞ったほうがよいと考えました。

Q.
加速度センサを使った電子工作のアイデアを教えて

A.
加速度センサーを使用した電子工作のアイデアはいくつかあります。以下はいくつかの例です:

1. ジェスチャー認識キーボード
加速度センサーを使用して、手の動きを認識し、ジェスチャー入力を行うことができるキーボードを作成することができます。例えば、手を右に動かすことで「→」の文字を入力する、手を左に動かすことで「←」の文字を入力する、といった具合です。

2. シェイク式LEDランプ
加速度センサーを使用して、シェイクすることでLEDランプを点灯することができるデバイスを作成することができます。例えば、加速度センサーを振動検知器として使用して、デバイスをシェイクすることでLEDランプを点灯させることができます。

3. 音楽プレイヤー
加速度センサーを使用して、デバイスを振動させることで、音楽プレイヤーの再生、一時停止、曲送りなどの操作を行うことができます。例えば、加速度センサーを振動検知器として使用して、デバイスをシェイクすることで曲を次に送ることができます。

4. スマートウォッチ
加速度センサーを使用して、手の動きを検知し、スマートウォッチの機能を制御することができます。例えば、手首を上げることで時計の画面を点灯させることができます。

これらはいくつかの加速度センサーを使用した電子工作の例です。加速度センサーは、様々なデバイスの動きを検知することができるため、アイデア次第で様々なものを作ることができます。

Q.
距離センサを使った電子工作のアイデアを教えて

A.
距離センサーを使用した電子工作のアイデアはいくつかあります。以下はいくつかの例です:

1. 自動ドア
距離センサーを使用して、人が近づいた時に自動的にドアを開く装置を作成することができます。例えば、距離センサーを設置し、人が近づくとドアを自動的に開くように設定します。

2. 近接スイッチ
距離センサーを使用して、物体が近づいた時にスイッチをオンにする装置を作成することができます。例えば、距離センサーを設置し、物体が近づくとスイッチが自動的にオンになるように設定します。

3. 障害物検知ロボット
距離センサーを使用して、障害物を検知するロボットを作成することができます。例えば、ロボットに距離センサーを設置し、前方に障害物がある場合は自動的に停止するように設定します。

4. 近接音声認識装置
距離センサーを使用して、人が近づいた時に音声認識装置をオンにすることができます。例えば、距離センサーを設置し、人が近づくと音声認識装置が自動的にオンになるように設定します。

これらはいくつかの距離センサーを使用した電子工作の例です。距離センサーは、物体や人の位置を検知することができるため、アイデア次第で様々なものを作ることができます。

少し特徴的というか、ひねりが効いたものが出てきた気がします。
M5Stackならではの要素があるといいなと思いました。

Q.
M5シリーズの、他のESPマイコンに対する特徴は何?

A.
M5シリーズは、ESPマイコンを搭載したマイクロコントローラボードです。M5シリーズは、以下のような特徴があります:

1. M5シリーズは、ESP32またはESP8266のマイクロコントローラを搭載しており、Wi-FiBluetoothなどの無線通信が可能です。これにより、インターネットに接続してIoTプロジェクトを開発することができます。

2. M5シリーズは、液晶ディスプレイ、センサー、ボタンなどの様々な周辺機器を統合しています。これにより、プロトタイプを迅速に開発し、簡単にデバッグすることができます。

3. M5シリーズは、Arduino IDEやMicroPythonなどの開発環境をサポートしており、初心者から上級者まで幅広いユーザーに向けた開発が可能です。

4. M5シリーズは、小型でコンパクトなデザインであり、ポータブルな電子デバイスの開発に最適です。また、M5Stackというオープンソースのモジュラーシステムを採用しており、モジュールの追加や交換が容易です。

これらの特徴により、M5シリーズはIoTや電子工作の開発に最適なハードウェアプラットフォームとして、人気を集めています。

Q.
他のESPシリーズとの違いは何?

A.
M5シリーズは、他のESPシリーズと比較して以下のような違いがあります。

1. 統合された周辺機器
M5シリーズは、液晶ディスプレイ、センサー、ボタンなどの様々な周辺機器を統合しています。これにより、プロトタイプを迅速に開発し、簡単にデバッグすることができます。一方、他のESPシリーズでは、これらの周辺機器を追加する必要があります。

2. オープンソースのモジュラーシステム
M5シリーズは、オープンソースのモジュラーシステム「M5Stack」を採用しています。これにより、モジュールの追加や交換が容易で、開発者がカスタマイズすることができます。一方、他のESPシリーズでは、モジュールの追加や交換が困難である場合があります。

3. ポータブルなデザイン
M5シリーズは、小型でコンパクトなデザインであり、ポータブルな電子デバイスの開発に最適です。一方、他のESPシリーズは、基本的には単体のボードであり、ポータブルな電子デバイスを開発する場合は、追加の周辺機器が必要になることがあります。

4. 開発環境のサポート
M5シリーズは、Arduino IDEやMicroPythonなどの開発環境をサポートしており、初心者から上級者まで幅広いユーザーに向けた開発が可能です。一方、他のESPシリーズは、開発環境のサポートが限定的な場合があります。

これらの違いにより、M5シリーズは、統合された周辺機器、オープンソースのモジュラーシステム、ポータブルなデザイン、開発環境のサポートなど、IoTや電子工作の開発に最適なハードウェアプラットフォームとして、他のESPシリーズと比較して優れているといえます。

しかしながら、決め手には欠けます。

そこで、ぷよぷよインベーダーゲームというゲームを組み合わせることを考えました。
しかしながら、そのルールがまとまりません。

Q.
ぷよぷよインベーダーゲームを合わせたようなゲームを考えました。詳細を設計して

Q.
素晴らしいアイデアです!ぷよぷよインベーダーゲームを組み合わせたゲームを設計するために、以下の詳細を考えてみましょう:

ゲーム名: "ぷよベーダー"

ゲームの目的:
プレイヤーは、インベーダーが降ってくるぷよぷよのフィールドをクリアしながら、高得点を目指します。

ゲームルール:
1. フィールド:
- フィールドは、ぷよぷよの落下を受け入れる領域です。通常のぷよぷよのフィールドと同じく、縦6列×横12列のマス目で構成されます。
- フィールドの一番下にはパドル(制御キャラクター)が配置されており、プレイヤーがパドルを操作します。

2. インベーダーの出現:
- インベーダーは、上部から徐々に降ってきます。インベーダーはぷよぷよのような形状をしており、それぞれが異なる色を持ちます。
- インベーダーは左右に移動し、フィールドの底に接触するとゲームオーバーになります。

3. ぷよぷよの操作:
- プレイヤーはパドルを左右に操作し、ぷよぷよを反射させます。パドルはフィールド内で水平に移動できます。
- ぷよぷよはパドルに当たると反射し、上方向に進行します。ぷよぷよ同士が重なると消え、得点が加算されます。

4. インベーダーへの攻撃:
- プレイヤーがぷよぷよを反射させて、インベーダーにぶつけると、インベーダーがダメージを受けます。
- インベーダーが一定のダメージを受けると撃破され、プレイヤーに得点が加算されます。

5. ゲームの終了:
- プレイヤーがインベーダーによってフィールドの底に到達されると、ゲームオーバーになります。
- プレイヤーの目標は、できるだけ多くのインベーダーを撃破し、高得点を獲得することです。

6. 難易度の上昇:
- インベーダーの降下速度や攻撃パターンは、ゲームが進むにつれて難しくなります。
- また、特殊なぷよぷよやアイテムが登場し、プレイヤーの戦略に影響を与えることもあります。

以上が、ぷよベーダーというゲームの基本的な設計です。詳細なゲームプレイやグラフィックス、音楽、スコアの計算方法など、さらなる拡張や改良も考えられます。

ここから「ぷよぷよをインベーダーに投げつける」というアイデアが固まります。
しかし、ぷよぷよを投げてインベーダーを攻撃するだけであれば、攻撃の方法が変わっただけでインベーダーゲームと違いがありません。
そこで、インベーダーを縦横規則的に配置することで、色をそろえて消すというぷよぷよ方式で消すことを考えました。
なんか、それらしいことを言おうとしているようにも思えなくはないですが、言葉足らずな感じです。

ところで、私自身ぷよぷよというゲームは聞いたことはあるもののプレイしたことがありません。
基本的なルールを確認します。

Q.
ぷよぷよの基本的なルールを教えて

A.
ぷよぷよは、ぷよと呼ばれるカラフルなゲル状のキャラクターを操作し、フィールド上のぷよを消すパズルゲームです。以下にぷよぷよの基本的なルールを説明します:

1. フィールドとぷよの配置:
- ぷよぷよは、縦6列×横12列のフィールド上に落下します。
- 最初に2つのぷよがランダムに配置され、それらを操作してフィールドに追加のぷよを落としていきます。

2. 操作方法:
- ぷよぷよを左右に移動させることができます。
- ぷよぷよを上に送ることで回転させることもできます。
- ぷよぷよを下に加速させることで、落下を早めることができます。

3. ぷよの接触と消去:
- 同じ色のぷよを4つ以上水平または垂直に連結させると、そのぷよたちは消えます。
- ぷよたちが消えると、上にあったぷよが下に詰まって落下し、新たなぷよがフィールドに追加されます。

4. 連鎖とぷよの追加:
- ぷよが消えると、連鎖が発生します。
- 連鎖が発生すると、さらにぷよが連鎖する可能性があり、連鎖数が増えるごとに得点が上がります。
- 新たに追加されるぷよは、フィールドの上部からランダムに配置されます。

5. ゲームオーバー:
- フィールドのぷよが上部に到達してしまうと、ゲームオーバーとなります。
- プレイヤーはできるだけ長く連鎖を続け、高得点を獲得することを目指します。

ぷよぷよは簡単なルールですが、連鎖の作り方やぷよの配置を戦略的に考えることで、高得点を狙うことができます。また、ぷよぷよにはさまざまなバリエーションやルールの変更があり、対戦モードやストーリーモードなども楽しむことができます。

Q.
ルールをまとめゲームを設計すると、
「画面上部から降りてくるインベーダーに二個セットのぷよぷよを投げつける。4つ揃うと消える。インベーダーは次々列をなしてせり出してくる。プレイヤーのラインまでインベーダーが来たら負け。」

A.
理解しました。以下に基本的なルールとゲーム進行の流れを説明します。

1. ゲームの目的:
- プレイヤーの目的は、画面上部から降りてくるインベーダーにぷよぷよを投げつけ、インベーダーを撃破することです。インベーダーがプレイヤーのラインまで到達する前にできるだけ多くのインベーダーを撃破しましょう。

2. フィールドとぷよの配置:
- フィールドは縦6列×横12列のマス目で構成されています。
- インベーダーは画面上部から列をなしてせり出してきます。

3. 操作方法:
- プレイヤーはぷよぷよを操作し、投げる位置とタイミングを調整します。
- ぷよぷよは上から下に落下し、インベーダーの列にぶつけることでダメージを与えます。

4. ぷよの消去:
- ぷよぷよがインベーダーの列に4つ揃った時、そのぷよたちは消えます。
- 消えたぷよの数に応じてスコアが加算されます。

5. インベーダーの進行:
- インベーダーは列をなしてせり出してくるため、プレイヤーのラインまでインベーダーが到達するとゲームオーバーとなります。

6. ゲームの進行:
- プレイヤーは連続してぷよぷよを投げつけ、インベーダーを撃破します。
- インベーダーの列をすべて撃破すると、次の列がせり出してきます。
- プレイヤーはできるだけ多くのインベーダーを撃破し、高得点を獲得することを目指します。

7. ゲームオーバー条件:
- インベーダーがプレイヤーのラインまで到達すると、ゲームオーバーとなります。
- プレイヤーの目標は、できるだけ長くインベーダーを撃破し、高得点を獲得することです。

このようなルールでゲームを進行させることで、ぷよぷよの要素とインベーダーゲームの要素を組み合わせた楽しいゲーム体験が得られるでしょう。ゲームバランスやレベルデザインなど、さらなる詳細な設計は、ゲームの目的や難易度に応じて調整することができます。

上から降りてくインベーダーを上から攻撃する、などちょっとゲームとして成立しないことを言っている面がありますが、検討の結果上から降りてくるインベーダーに対して下からぷよぷよを投げる、という設計にすることにしました。

Q.
このゲームの操作に必要なボタンはいくつになりますか?

A.
このゲームの操作に必要なボタンは最低でも2つ以上必要です。

1. 移動ボタン(左右):
- プレイヤーがぷよぷよを操作するために、左右に移動する必要があります。
- 移動ボタンはプレイヤーがパドル(ぷよぷよを投げるキャラクター)を左右に制御するために使用されます。

2. 投げるボタン:
- プレイヤーがぷよぷよをインベーダーに投げるために使用するボタンが必要です。
- 投げるボタンを押すことで、ぷよぷよがフィールド上部からインベーダーの列に向かって落下します。

これらの2つのボタンを最低限使用することで、プレイヤーはぷよぷよを制御し、インベーダーに攻撃することができます。ただし、ゲームの設計やプラットフォームによっては、さらに追加のボタンが必要になる場合もあります。例えば、スペシャルアビリティを使用するボタンや、パワーアップアイテムを取得するためのボタンなどがあるかもしれません。

ゲームプラットフォームや実装方法によって、具体的なボタンの数や配置は異なる場合がありますので、開発時にはプラットフォームの仕様や利便性、操作性を考慮してボタンの設計を行うことが重要です。

あとは、ぷよぷよを回転させるボタンとして右回り・左回りのボタンがやはり必要そうです。
ボタンは追加するか、全く外部にコントローラーを付けるかが必要になります。
最終的には、背面にボタンを2つ追加することにしました。

まとめ

ChatGPTでブレストから詳細設計まで行いました。
「それは言っていることおかしい(成立しない)だろ」ということは多々出てきますが、ブレストと考えてそのあたりは自分たちで上手く設計していくことが必要です。
特に私は、0→1は苦手なので、このように最初の1を出してもらえるとアイデアを広げることが出来ます。