2.14 GAME - リンゴを食べる

このプロジェクトでは、ボタンを使ってビートルがリンゴを食べるゲームをします。

緑の旗をクリックしたら、ボタンを押してビートルが回転し、再びボタンを押すとビートルがその角度で前進を停止します。ビートルの角度を制御して、地図上の黒線に触れずにリンゴを食べるまで前進させる必要があります。黒線に触れたらゲームオーバーです。

../_images/14_apple.png

必要な部品

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

全セットを購入するのは非常に便利です。こちらがリンクです:

名前

このキットのアイテム

リンク

ESP32 Starter Kit

320+

ESP32 Starter Kit

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

コンポーネントの紹介

購入リンク

ESP32 WROOM 32E

BUY

ESP32カメラ拡張ボード

-

ブレッドボード

BUY

ジャンパーワイヤ

BUY

抵抗器

BUY

ボタン

BUY

回路の構築

ボタンは4ピンデバイスで、ボタンが押されると、ピン1がピン2に、ピン3がピン4に接続され、4ピンが接続されて回路が閉じます。

../_images/5_buttonc.png

次の図に従って回路を組み立てます。

  • ボタン左側のピンの一つをピン14に接続し、ピン14はプルダウン抵抗と0.1uF (104) のコンデンサ(ジッタを消去し、ボタンが動作時に安定したレベルを出力するため)に接続されます。

  • 抵抗とコンデンサの他端をGNDに接続し、ボタン右側のピンを5Vに接続します。

../_images/6_doorbel_bb.png

プログラミング

達成したい効果は、ボタンを使って Beetle スプライトの方向を制御し、 Maze の背景の黒線に触れることなく前進してリンゴを食べ、食べると背景が切り替わることです。

今、関連する背景とスプライトを追加しましょう。

1. 背景とスプライトの追加

Choose a backdrop ボタンから Maze の背景を追加します。

../_images/14_backdrop.png

デフォルトのスプライトを削除し、 Beetle スプライトを選択します。

../_images/14_sprite.png

Beetle スプライトを Maze の背景の入口に置き、この時点でのx,y座標値を覚えておき、スプライトのサイズを40%に調整します。

../_images/14_sprite1.png

2. 背景の描画

次に、WIN!と表示される背景を描くだけの簡単な作業です。

まず背景サムネイルをクリックして Backdrops ページに移動し、空白のbackdrop1をクリックします。

../_images/14_paint_back.png

今から描き始めますが、以下の写真を参考に描くことも、勝利を表現していれば自分で背景を描いても構いません。

  • Circle ツールを使用して、赤色でアウトラインのない楕円を描きます。

  • その後、 Text ツールを使って「WIN!」という文字を書き、文字色を黒に設定し、文字のサイズと位置を調整します。

  • この背景の名前を Win にします。

../_images/14_win.png

3. 背景のスクリプト化

ゲームがスタートするたびに、背景を Maze に切り替える必要があります。

../_images/14_switchback.png

4. スプライトビートルのスクリプト作成

次に、ボタンの制御下で Beetle スプライトが前に進み、方向を変えることができるスクリプトを書きます。ワークフローは以下の通りです。

  • 緑の旗がクリックされたら、 Beetle の角度を90に設定し、位置を(-134, -134)に設定します。または、自分で置いた位置の座標値に置き換えてください。変数 flag を作成し、初期値を-1に設定します。

../_images/14_bee1.png

次に、[forever]ブロック内で、さまざまな可能性のあるシナリオを判断するために4つの[if]ブロックを使用します。

  • ボタンが1(押された)の場合、[mod]ブロックを使用して変数 flag の値を0と1(この押しで0、次の押しで1)との間で切り替えます。

../_images/14_bee2.png
  • flag=0(このボタン押し)の場合、 Beetle スプライトが時計回りに回転させます。その後、flagが1に等しいか(再びボタンが押されたか)を判断し、等しい場合は Beetle スプライトが前に進みます。それ以外の場合は、引き続き時計回りに回転します。

../_images/14_bee3.png
  • ビートルスプライトが黒( Maze の背景にある黒い線)に触れた場合、ゲームは終了し、スクリプトの実行が停止します。

注釈

[Touch color]ブロックの色エリアをクリックし、その後スポイトツールを選択してステージ上の黒い線の色を取ります。任意の黒を選んだ場合、この[Touch color]ブロックは機能しません。

../_images/14_bee5.png
  • ビートルが赤に触れる場合(リンゴの赤色もストローツールで取ります)、背景を Win に切り替え、ゲームが成功し、スクリプトの実行が停止します。

../_images/14_bee4.png