.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! .. _sh_eat_apple: 2.16 ゲーム - りんごを食べる ============================== このプロジェクトでは、ボタンを使用してビートルを操作し、りんごを食べるゲームを楽しみます。 緑のフラグをクリックした後、ボタンを押すとビートルは回転します。ボタンを再度押すとビートルはその角度で直進します。マップ上の黒い線に触れずに、適切な角度でビートルを操作し、りんごを食べるまで進めてください。もし黒い線に触れてしまったら、ゲームオーバーとなります。 .. image:: img/14_apple.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_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_capacitor` - |link_capacitor_buy| * - :ref:`cpn_button` - |link_button_buy| 回路の作成 ----------------------- ボタンは4ピンのデバイスです。ピン1はピン2に、ピン3はピン4に接続されています。ボタンが押されると、4つのピンが接続され、回路が完成します。 .. image:: img/5_buttonc.png 下記の図に従い、回路を組み立ててください。 * ボタンの左側のピンの1つを、プルダウン抵抗と0.1uF (104) のキャパシターに接続されているピン12に接続します(ボタン動作時のジッタを除去し、安定した出力を得るため)。 * 抵抗とキャパシタのもう一方の端子をGNDに接続し、ボタンの右側のピンの1つを5Vに接続します。 .. image:: img/circuit/button_circuit.png プログラミング ------------------ 私たちが達成したい効果は、ボタンを使って **Beetle** スプライトの方向を制御し、 **Maze** バックドロップ上の黒い線に触れずに前進してりんごを食べ、食べるとバックドロップが切り替わることです。 まず関連するバックドロップとスプライトを追加します。 **1. バックドロップとスプライトの追加** **Choose a backdrop** ボタンを使って **Maze** バックドロップを追加します。 .. image:: img/14_backdrop.png デフォルトのスプライトを削除し、 **Beetle** スプライトを選択します。 .. image:: img/14_sprite.png **Beetle** スプライトを **Maze** バックドロップの入口に配置し、この時点でのx,y座標の値を覚えておき、スプライトのサイズを40%に調整します。 .. image:: img/14_sprite1.png **2. バックドロップの描画** 次に、WIN!キャラクターが表示されるバックドロップを簡単に描画します。 まずバックドロップのサムネイルをクリックして **Backdrops** ページに移動し、blank backdrop1をクリックします。 .. image:: img/14_paint_back.png :width: 800 描画を開始します。下の画像を参考に描くことができますし、勝利の表情として独自のバックドロップを描くこともできます。 * **Circle** ツールを使用して、色を赤に設定し、アウトラインを持たない楕円を描きます。 * 次に **Text** ツールを使って、\"WIN!\"という文字を書き、文字の色を黒に設定し、文字のサイズと位置を調整します。 * バックドロップの名前を **Win** にします。 .. image:: img/14_win.png **3. バックドロップのスクリプト作成** ゲームが開始するたびに、バックドロップを **Maze** に切り替える必要があります。 .. image:: img/14_switchback.png **4. Beetleスプライトのスクリプトの記述** ボタンの制御の下で前進と方向転換ができるように、スプライト **Beetle** のスクリプトを書きます。ワークフローは以下の通りです。 * 緑のフラグがクリックされたとき、 **Beetle** の角度を90に設定し、位置を(-134, -134)に設定します。また、自分で配置した位置の座標値に置き換えることもできます。変数 **flag** を作成し、初期値を-1に設定します。 .. image:: img/14_bee1.png 次に、[forever]ブロック内で、4つの[if]ブロックを使用して様々な可能性のあるシナリオを判断します。 * キーが1(pressed)の場合、[`mod `_]ブロックを使用して変数 **flag** の値を0と1の間で切り替えます(このプレスのための0、次のプレスのための1を交互にする)。 .. image:: img/14_bee2.png * flag=0(このキーの押下)の場合、 **Beetle** スプライトは時計回りに回転します。次にflagが1(再びキーが押された)と等しいかどうかを判断し、 **Beetle** スプライトが前進するか、時計回りに回り続けるかを決定します。 .. image:: img/14_bee3.png * Beetleスプライトが黒( **Maze** バックドロップ上の黒い線)に触れると、ゲームは終了し、スクリプトは実行を停止します。 .. note:: [Touch color]ブロック内の色領域をクリックし、アイドロッパーツールを選択してステージ上の黒い線の色を取得する必要があります。任意で黒を選択すると、この[Touch color]ブロックは動作しません。 .. image:: img/14_bee5.png * Beetleが赤に触れると(アップルの赤い色を取得するためにストロツールも使用します)、バックドロップは **Win** に切り替わり、ゲームは成功し、スクリプトの実行が停止します。 .. image:: img/14_bee4.png