.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! .. _sh_dragon: 2.22 GAME - ドラゴン討伐 ============================ このゲームでは、ジョイスティックを使ってドラゴンを討伐します。 緑色をクリックすると、ドラゴンは右側で上下に浮かび、時々火を吹きます。魔法の杖の動きをジョイスティックで制御し、ドラゴンに向かって星の攻撃を打ち出しつつ、ドラゴンが放つ炎を避けて、最終的に倒す必要があります。 .. image:: img/19_dragon.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_joystick` - \- 回路の作成 ----------------------- ジョイスティックは、ベース上で旋回するスティックを持つ入力デバイスで、制御するデバイスにその角度や方向を報告します。ジョイスティックは、ビデオゲームやロボットの制御によく使用されます。 コンピュータに完全な動きを伝えるために、ジョイスティックはスティックの位置を2つの軸で測定する必要があります – X軸(左から右)とY軸(上から下)です。 ジョイスティックの動きの座標は以下の図に示されています。 .. note:: * x座標は左から右へ、範囲は0-1023。 * y座標は上から下へ、範囲は0-1023。 .. image:: img/16_joystick.png 以下の図に従って回路を組み立ててください。 .. image:: img/circuit/joystick_circuit.png プログラミング ------------------ **1. ドラゴン** **Woods** の背景は **Choose a Backdrop** ボタンから追加します。 .. image:: img/19_dragon01.png * デフォルトのスプライトを削除し、 **Dragon** スプライトを追加します。 .. image:: img/19_dragon0.png * **Costumes** ページに移動し、dragon-b と dragon-c を水平に反転します。 .. image:: img/19_dragon1.png * サイズを50%に設定します。 .. image:: img/19_dragon3.png * 変数 - **dragon** を作成して、ドラゴンのライフポイントを記録し、初期値を50に設定します。 .. image:: img/19_dragon2.png * 次に、スプライトのコスチュームを **dragon-b** に切り替え、 **Dragon** スプライトを一定の範囲で上下に動かします。 .. image:: img/19_dragon4.png * **Dragon** スプライトが吹き出す火として、 **Lightning** スプライトを追加します。Costumesページで90°時計回りに回転させ、 **Lightning** スプライトが正しい方向に動くようにします。 .. note:: **Lightning** スプライトのコスチュームを調整する際、中心から外れてしまうことがありますが、それは避ける必要があります! 中心点はスプライトの真ん中に合わせてください! .. image:: img/19_lightning1.png * まず、 **Dragon** スプライトの **dragon-c** コスチュームを調整し、その中心点が火の尾に位置するようにします。これにより、 **Dragon** スプライトと **Lightning** スプライトの位置が正確になり、 **Lightning** がドラゴンの足元から発射されるのを防ぎます。 .. image:: img/19_dragon5.png * 対応するように、 **dragon-b** はドラゴンの頭を中心点と一致させる必要があります。 .. image:: img/19_dragon5.png * **Lightning** スプライトのサイズと方向を調整し、画像がより調和のとれたものになるようにします。 .. image:: img/19_lightning3.png * 今度は **Lightning** スプライトをスクリプト化します。これは簡単で、 **Dragon** スプライトを常に追従させるだけです。この時点で緑の旗をクリックすると、 **Dragon** が稲妻を口にくわえて動き回るのが見えるでしょう。 .. image:: img/19_lightning4.png * **Dragon** スプライトに戻り、口から火を吹き出すようにします。口の中の火を発射しないよう注意し、 **Lightning** スプライトのクローンを作成します。 .. image:: img/19_dragon6.png * **Lightning** スプライトをクリックし、 **Lightning** のクローンをランダムな角度で発射します。一定の時間が経過すると、壁から跳ね返り消えます。 .. image:: img/19_lightning5.png * **Lightning** スプライトで、その本体を隠し、クローンを表示します。 .. image:: img/19_lightning6.png これでドラゴンは上下に動きながら火を吹き出すことができます。 **2. Wand** * **Wand** スプライトを作成し、方向を180にして右を向かせます。 .. image:: img/19_wand1.png * 変数 **hp** を作成して、そのライフ値を記録します。初期設定は3にします。次に、ジョイスティックの値を読み取り、それを使用してワンドの動きを制御します。 .. image:: img/19_wand2.png * ドラゴンは雷を持っており、それを砕くワンドには「魔法の弾丸」があります! **Star** スプライトを作成し、サイズを変更して、常に **Wand** スプライトに従い、星の数を3つに制限します。 .. image:: img/19_star2.png * **Wand** スプライトが星を自動的に撃つようにします。 **Wand** スプライトが星を撃つ方法は、ドラゴンが火を吹き出す方法と同じです。クローンを作成するだけです。 .. image:: img/19_wand3.png * **Star** スプライトに戻り、そのクローンが右に回転して撃つようにスクリプトを書きます。ステージの外に出た後に消え、星の数を回復します。 **Lightning** スプライトと同様に、本体を隠してクローンを表示します。 .. image:: img/19_star3.png これで、星の弾丸を撃つワンドができました。 **3. Fight!** ワンドとドラゴンは現在まだ互いに対立していますが、それらを戦わせることにします。ドラゴンは強力であり、ワンドはドラゴンに対して聖戦を行う勇敢な人です。彼らの間の相互作用は、以下の部分で構成されます。 1. ワンドがドラゴンに触れると、ワンドは後ろに打ち退けられ、ライフポイントを失います。 2. 雷がワンドに当たると、ワンドはライフポイントを失います。 3. 星の弾丸がドラゴンに当たると、ドラゴンはライフポイントを失います。 その後、各スプライトのスクリプトを変更する作業に進みます。 * **Wand** が **Dragon** に当たると、後ろに打ち退けられ、ライフポイントを失います。 .. image:: img/19_wand4.png * **Lightning** ( **Lightning** スプライトのクローン)が **Wand** スプライトに当たると、ポップ音を鳴らして消え、 **Wand** はライフポイントを失います。 .. image:: img/19_lightning7.png * **Star** ( **Star** スプライトのクローン)が **Dragon** に当たると、収集音を発して消え、 **Star** の数を回復し、 **Dragon** はライフポイントを失います。 .. image:: img/19_star4.png **4. ステージ** **Wand** と **Dragon** の戦いは最終的に勝者と敗者に分かれることになりますが、それはステージで表現します。 * **Blue Sky** の背景を追加し、それに「WIN!」の文字を書き、ドラゴンが倒され、夜明けが来たことを示します。 .. image:: img/19_sky0.png * そして、次のように空白の背景を修正して、ゲームが失敗し、全てが闇になることを示します。 .. image:: img/19_night.png * これらの背景を切り替えるスクリプトを書きます。緑の旗がクリックされると、 **Woods** の背景に切り替えます。ドラゴンのライフポイントが1未満の場合、ゲームが成功し、背景を **Blue Sky** に切り替えます。 **Wand** のライフポイントが1未満の場合、 **Night** の背景に切り替え、ゲームが失敗します。 .. image:: img/19_sky1.png