.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! .. _sh_parrot: 2.17 ゲーム - フラッピーパロット ================================== このゲームでは、超音波モジュールを利用して、フラッピーパロットというゲームをプレイします。 スクリプトが実行されると、緑の竹がランダムな高さで右から左へとゆっくりと移動します。超音波モジュールの上に手を置き、超音波モジュールと手の距離が10cm未満の場合、パロットは上昇します。それ以外の場合、下降します。 緑の竹(パドル)にぶつからないように、手と超音波モジュールとの距離を調節する必要があります。もし接触した場合、ゲームオーバーです。 .. image:: img/15_parrot.png 必要な部品 --------------------- このプロジェクトには以下の部品が必要です。 全てのキットをまとめて購入するのが便利です。以下にリンクを記載します。 .. list-table:: :widths: 20 20 20 :header-rows: 1 * - 名前 - このキットのアイテム - リンク * - 3 in 1 Starter Kit - 380+ - |link_3IN1_kit| 以下のリンクから、個別に購入することも可能です。 .. list-table:: :widths: 30 20 :header-rows: 1 * - コンポーネントの紹介 - 購入リンク * - :ref:`cpn_uno` - |link_Uno_R3_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_ultrasonic` - |link_ultrasonic_buy| 回路の作成 ----------------------- 超音波センサーモジュールは、超音波を使って対象物までの距離を測定する機器である。 2つのプローブがある。1つは超音波を送信するもので、もう1つは超音波を受信し、送受信時間を距離に変換することで、障害物との距離を検出する。 以下の図に従って回路を組み立ててください。 .. image:: img/circuit/ultrasonic_circuit.png プログラミング ------------------ 実現したい効果は、超音波モジュールを使って、スプライト **Parrot** の飛行高さをコントロールし、同時に **Paddle** スプライトを避けることです。 **1. スプライトの追加** デフォルトのスプライトを削除し、 **Choose a Sprite** ボタンで **Parrot** スプライトを追加します。サイズを50%に設定し、位置を左中央に移動します。 .. image:: img/15_sprite.png 次に、 **Paddle** スプライトを追加し、サイズを150%に設定、角度を180に設定し、初期位置を右上隅に移動します。 .. image:: img/15_sprite1.png **Paddle** スプライトの **Costumes** ページに移動して、アウトラインを削除します。 .. image:: img/15_sprite2.png **2. Parrotスプライトのスクリプト作成** 次に、飛行中の **Parrot** スプライトのスクリプトを記述します。飛行高さは超音波モジュールの検出距離によって決まります。 * 緑のフラグがクリックされたとき、0.2秒ごとにコスチュームを切り替えて常に飛んでいるように見せます。 .. image:: img/15_parr1.png * 超音波モジュールの値を読み取り、[round]ブロックを使って四捨五入した後、変数 **distance** に格納します。 .. image:: img/15_parr2.png * 超音波の検出距離が10cm未満の場合、y座標を50増やし、 **Parrot** スプライトは上昇します。それ以外の場合、y座標の値は40減少し、 **Parrot** は下降します。 .. image:: img/15_parr3.png * **Parrot** スプライトが **Paddle** スプライトに触れると、ゲームは終了し、スクリプトの実行が停止します。 .. image:: img/15_parr4.png **3. Paddleスプライトのスクリプト作成** 次に、 **Paddle** スプライトのスクリプトを書きます。これはステージ上でランダムに表示する必要があります。 * 緑のフラグがクリックされたとき、スプライト **Paddle** を非表示にし、同時に自分自身のクローンを作成します。[`create clone of `_] ブロックはコントロールブロックおよびスタックブロックです。引数のスプライトのクローンを作成します。 .. image:: img/15_padd.png * **Paddle** がクローンとして表示されるとき、x座標は220(一番右)で、y座標はランダムに(-125から125)(高さランダム)になります。 .. image:: img/15_padd1.png * [repeat]ブロックを使用して、x座標の値をゆっくりと減少させることで、 **Paddle** スプライトのクローンが右から左にゆっくりと移動するのを見ることができます。 .. image:: img/15_padd2.png * 新しい **Paddle** スプライトのクローンを再度作成し、前のクローンを削除します。 .. image:: img/15_padd3.png