2.13 GAME - Star-Crossed

PictoBloxで、いくつかの楽しいミニゲームをプレイします。

ここでは、ジョイスティックモジュールを使用して、スタークロストゲームをプレイします。

スクリプトが実行されると、星がステージ上にランダムに出現します。ジョイスティックを使ってロケットシップを制御し、星を避けなければなりません。もし星に触れたら、ゲームオーバーになります。

../_images/16_rocket.png

必要な部品

このプロジェクトでは、以下のコンポーネントが必要です。

全キットを購入するのが便利ですが、以下のリンクからも個別に購入できます。

名前

このキットのアイテム

リンク

ESP32 Starter Kit

320+

ESP32 Starter Kit

以下のリンクから個別に購入することもできます。

コンポーネントの紹介

購入リンク

ESP32 WROOM 32E

BUY

ESP32カメラ拡張ボード

-

ジャンパーワイヤ

BUY

ジョイスティックモジュール

BUY

学べること

  • ジョイスティックモジュールの仕組み

  • スプライトのxとy座標の設定方法

回路の構築

ジョイスティックは、基部でピボットするスティックからなる入力デバイスで、その角度や方向を制御しているデバイスに報告します。ジョイスティックは、ビデオゲームやロボットを制御するためによく使用されます。

コンピュータに完全な動きの範囲を伝えるために、ジョイスティックは2軸 - X軸(左右)とY軸(上下)でスティックの位置を測定する必要があります。

ジョイスティックの動作座標は以下の図に示されています。

注釈

  • x座標は左から右へ、範囲は0-4095です。

  • y座標は上から下へ、範囲は0-4095です。

../_images/16_joystick.png

以下の図に従って回路を構築してください。

../_images/14_star_crossed_bb.png

プログラミング

このスクリプトは、緑の旗がクリックされた時に、 Stars スプライトがステージ上をカーブを描いて動き、ジョイスティックを使って Rocketship を動かし、 Stars スプライトに触れないようにする効果を実現することです。

1. スプライトとバックドロップの追加

デフォルトのスプライトを削除し、 Choose a Sprite ボタンを使用して Rocketship スプライトと Star スプライトを追加します。 Rocket スプライトのサイズは50%に設定されていることに注意してください。

../_images/16_sprite.png

今度は Stars のバックドロップを Choose a Backdrop で追加します。

../_images/16_sprite1.png

2. ロケットシップのためのスクリプティング

Rocketship スプライトは、ランダムな位置に現れてからジョイスティックによって上下左右に動かされる効果を実現することです。

ワークフローは以下の通りです。

  • 緑の旗がクリックされたとき、スプライトをランダムな位置に移動させ、2つの変数 xy を作成します。これらはそれぞれピン33(ジョイスティックのVRX)とピン35(ジョイスティックのVRY)から読み取った値を格納します。スクリプトを実行させ、ジョイスティックを上下左右に動かして、xとyの値の範囲を確認できます。

../_images/16_roc2.png
  • ピン33の値は0-4095の範囲で(中間は約1800です)。 x-1800>200 を使用して、ジョイスティックが右にトグルされているかを判断し、そうであれば、スプライトのx座標を+30にします(スプライトを右に動かすため)。

../_images/16_roc3.png
  • ジョイスティックが左にトグルされた場合は、スプライトのx座標を-30にします(スプライトを左に動かします)。

../_images/16_roc4.png
  • ジョイスティックのy座標は上(0)から下(4095)であり、スプライトのy座標は下から上になります。そのため、ジョイスティックを上に動かし、スプライトも上に動かすためには、スクリプト内でy座標を-30にする必要があります。

../_images/16_roc5.png
  • ジョイスティックを下にフリックした場合、スプライトのy座標は+30です。

../_images/16_roc6.png

3. 星のためのスクリプティング

Star スプライトが達成する効果は、ランダムな位置に現れ、 Rocketship にぶつかった場合はスクリプトの実行を停止し、ゲームが終了することです。

  • 緑の旗がクリックされてスプライトがランダムな位置に移動したとき、[turn degrees]ブロックは Star スプライトが少し角度を変えて前に進むようにするので、カーブを描いて動いているように見えますし、端に当たったら跳ね返ります。

../_images/16_star1.png
  • 動いている間にスプライトが Rocketship スプライトに触れた場合、スクリプトの実行を停止します。

../_images/16_star2.png