.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! .. _sh_protect_heart: 2.21 GAME - 心を守れ ===================================== このプロジェクトでは、反応速度を試すゲームを作成しましょう。 舞台には矩形の箱に守られた心があり、舞台の任意の位置からこの心に向かって矢が飛んできます。矢の色はランダムに黒と白の間で変わり、矢はますます速く飛びます。 矩形の箱の色と矢の色が同じ場合、矢は外部にブロックされ、レベルが1追加されます。両方の色が同じでない場合、矢は心を撃ち抜き、ゲームは終了します。 ここでは、矩形のボックスの色はLine Trackingモジュールによって制御されます。モジュールが黒い表面(反射する表面)に置かれたとき、矩形のボックスの色は黒であり、それ以外の場合は白です。 従って、矢の色に応じて、Line Trackingモジュールを白い表面または黒い表面に置くかどうかを決定する必要があります。 .. image:: img/22_heart.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_track` - |link_track_buy| 回路の作成 ----------------------- これはデジタルのLine Trackingモジュールであり、黒い線が検出されると1を出力し、白い線が検出されると0の値を出力します。さらに、モジュール上のポテンショメータを通じて感知距離を調整することができます。 次の図に従って回路を組み立ててください。 .. image:: img/circuit/linetrack_circuit.png .. note:: プロジェクトを開始する前に、モジュールの感度を調整する必要があります。 上記の図に従って配線し、R3ボードに電源を供給します(USBケーブルを直接挿入するか、9Vの電池ボタンケーブルを使用)。コードをアップロードせずに。 机の上に黒い電気テープを貼り、Line Trackモジュールを机から2cmの高さに置きます。 センサーを下に向け、モジュールの信号LEDが白いテーブルで点灯し、黒いテープで消灯することを確認します。 そうでない場合、モジュール上のポテンショメータを調整して、上記の効果を実現できるようにします。 プログラミング ------------------ ここでは、 **Heart** 、 **Square Box** 、 **Arrow1** の3つのスプライトを作成する必要があります。 * **Heart**:舞台の真ん中で止まっていて、 **Arrow1** スプライトに触れるとゲームが終了します。 * **Square Box**:コスチュームが2種類あり、黒と白で、Line Trackingモジュールの値に応じてコスチュームを切り替えます。 * **Arrow**:任意の位置から舞台の中央に向かって黒/白で飛びます。その色が **Square Box** スプライトの色と一致する場合、それはブロックされ、ランダムな位置から舞台の中央に再び飛ぶ。その色が **Square Box** スプライトの色と一致しない場合、 **Heart** スプライトを通過し、ゲームが終了します。 **1. Square Boxスプライトを追加する** Arrow1とSquare Boxスプライトの両方が白いコスチュームを持っているため、それらを舞台に表示するために、今、背景を黒、白、赤を除く任意の色で塗りつぶします。 * **Backdrop1** をクリックして、その **Backdrops** ページに移動します。 * 塗りつぶす色を選択します。 * 描画ボードと同じサイズの矩形を描画するために **Rectangle** ツールを使用します。 .. image:: img/22_heart0.png デフォルトのスプライトを削除し、 **Choose a Sprite** ボタンを使用して **Square Box** スプライトを追加し、そのxとyを(0, 0)に設定します。 .. image:: img/22_heart1.png **Square Box** スプライトの **Costumes** ページに移動して、黒と白のコスチュームを設定します。 * 選択ツールをクリックします。 * キャンバス上の矩形を選択します。 * 塗りつぶしの色を黒に設定します。 * そして、コスチュームの名前を **Black** とします。 .. image:: img/22_heart2.png 2番目のコスチュームを選択し、塗りつぶしの色を白に設定し、その名前をWhiteに設定し、残りのコスチュームを削除します。 .. image:: img/22_heart3.png **2. Heartスプライトの追加** **Heart** スプライトを追加し、その位置を(0, 0)に設定し、Square Boxの中に位置しているようにサイズを縮小します。 .. image:: img/22_heart5.png **Costumes** ページで、紫色のハートのコスチュームを破損しているように調整します。 .. image:: img/22_heart6.png **3. Arrow1スプライトの追加** **Arrow1** スプライトを追加します。 .. image:: img/22_heart7.png **Costumes** ページで、右向きのコスチュームを保持・複製し、その色を黒と白に設定します。 .. image:: img/22_heart8.png **4. Square Boxスプライトのスクリプト作成** **Blocks** ページに戻り、 **Square Box** スプライトのスクリプトを作成します。 * デジタルピン2(ラインフォローモジュール)の値が1(黒い線が検出された場合)の場合、コスチュームを **Black** に切り替えます。 * それ以外の場合は、コスチュームを **White** に切り替えます。 .. image:: img/22_heart4.png **5. Heartスプライトのスクリプト作成** **Heart** スプライトは **Square Box** 内に保護されており、デフォルトでは赤いコスチュームです。Arrow1スプライトが触れた場合、ゲームは終了します。 .. image:: img/22_heart9.png **6. Arrow1スプライトのスクリプト作成** 緑のフラグがクリックされたとき、 **Arrow1** スプライトを非表示にし、クローンを作成します。 .. image:: img/22_heart10.png [init] ブロックを作成して、 **Arrow1** スプライトの位置、向き、色を初期化します。 ランダムな位置で現れ、それと **Heart** スプライトとの距離が200未満の場合、距離が200以上になるまで外向きに移動します。 .. image:: img/22_heart11.png **Heart** スプライトの方向に向けてその方向を設定します。 .. image:: img/22_heart12.png 色を黒/白の間でランダムに切り替えます。 * 変数の色が0の場合、コスチュームを **White** に切り替えます。 * 変数の色が1の場合、コスチュームを **Black** に切り替えます。 .. image:: img/22_heart14.png これで、移動を開始します。変数 **level** の値が増加すると、移動速度が速くなります。 .. image:: img/22_heart13.png **Square Box** スプライトとの衝突効果を設定します。 * **Arrow1** スプライトと **Square Box** スプライトの色が同じ(Line Trackモジュールの値に応じて変更される)場合、新しいクローンが作成され、ゲームは続行されます。 * 彼らの色が一致しない場合、 **Arrow1** スプライトは移動を続け、 **Heart** スプライトに当たるとゲームが終了します。 .. image:: img/22_heart15.png .. note:: 2つの [touch color()] ブロックは、Square Boxの黒/白のコスチュームをそれぞれ別々に取得する必要があります。 .. image:: img/22_heart16.png