Skip to content

Latest commit

 

History

History
152 lines (89 loc) · 7.7 KB

18_brick.rst

File metadata and controls

152 lines (89 loc) · 7.7 KB

Note

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
  • 特別割引:最新製品の独占割引をお楽しみください。
  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう!

2.18 ゲーム - ブレイクアウトクローン

このゲームでは、ポテンショメータを利用してブレイクアウトクローンゲームをプレイします。

緑のフラグをクリックした後、ポテンショメータでステージ上のパドルを操作してボールをキャッチします。ボールを上に移動させ、ブロックをヒットさせると、すべてのブロックが消え、ゲームに勝利します。ボールをキャッチしないと、ゲームに敗北します。

img/17_brick.png

必要な部品

このプロジェクトで必要となる部品は以下のとおりです。

一括でキットを購入することがおすすめです。以下のリンクを参照してください:

名前 このキットのアイテム リンク
3 in 1 Starter Kit 380+ |link_3IN1_kit|

以下のリンクから部品を個別に購入することも可能です。

コンポーネントの紹介 購入リンク
:ref:`cpn_uno` |link_Uno_R3_buy|
:ref:`cpn_breadboard` |link_breadboard_buy|
:ref:`cpn_wires` |link_wires_buy|
:ref:`cpn_potentiometer` |link_potentiometer_buy|

回路の作成

ポテンショメータは3端子の抵抗素子です。2つのサイドピンは5VとGNDに接続し、中央のピンはA0に接続します。ArduinoボードのADCコンバータを使用して変換した後、値の範囲は0-1023となります。

img/circuit/potentiometer_circuit.png

プログラミング

ステージには3つのスプライトが存在します。

1. パドルスプライト

Paddle の目的は、ステージの底の中央に初期位置があり、ポテンショメータで左右に動かすことです。

  • デフォルトのスプライトを削除し、 Choose a Sprite ボタンで Paddle スプライトを追加して、xとyの位置を(0, -140)に設定します。

img/17_padd1.png

  • Costumes ページに移動して、アウトラインを削除し、色を濃い灰色に変更します。

img/17_padd3.png

  • 緑のフラグがクリックされたとき、 Paddle スプライトの初期位置を(0, -140)に設定し、A0の値(ポテンショメータ)を変数 a0 に読み取ります。 Paddle スプライトはx座標 -195~195で左右に移動するため、[map]ブロックを使用して、変数 a0 の範囲0~1023を-195~195にマッピングします。

img/17_padd2.png

  • ポテンショメータを回して、ステージ上で Paddle が左右に動くかを確認します。

2. ボールスプライト

ボールスプライトの動作は、ステージを移動し、端に触れると跳ね返ります。ステージの上のブロックに触れると下に跳ね返り、落下中にパドルスプライトに触れると上に跳ね返ります。そうでない場合は、スクリプトの実行を停止し、ゲームが終了します。

  • Ball スプライトを追加します。

img/17_ball1.png

  • 緑のフラグをクリックすると、 Ball スプライトの角度を45°に設定し、初期位置を(0, -120)に設定します。

img/17_ball2.png

  • さて、 Ball スプライトをステージの周りに移動させ、端に触れると跳ね返るようにします。緑のフラグをクリックして効果を確認してください。

img/17_ball3.png

  • Ball スプライトが Paddle スプライトに触れた場合、反射を行います。これを簡単に実行する方法は、角度を直接反転させることですが、それを行うとボールの軌道が完全に固定されてしまい、非常に退屈になります。したがって、2つのスプライトの中心を使用して計算し、バッフルの中心の反対方向にボールを跳ね返すようにします。

img/17_ball4.png

img/17_ball6.png

  • Ball スプライトがステージの端に落ちると、スクリプトの実行が停止し、ゲームが終了します。

img/17_ball5.png

3. Block1 スプライト

Block1 スプライトは、ステージの上で自身の4x8のクローンをランダムな色で表示し、 Ball スプライトに触れられるとクローンを削除する効果があります。

Block1 スプライトは PictoBlox ライブラリには含まれていないので、自分で描くか、既存のスプライトを修正する必要があります。ここでは Button3 スプライトを使って修正します。

  • Button3 スプライトを追加した後、 Costumes ページに移動します。まず button-a を削除し、 button-b の幅と高さを縮小し、スプライトの名前を Block1 に変更します。

Note

  • Block1 の幅については、画面上で8つ並べることができるかどうかをシミュレートして確認してください。できない場合は、幅を適切に縮小してください。
  • Block1 スプライトを縮小する過程で、中心点をスプライトの中央に保持する必要があります。

img/17_bri2.png

  • まず2つの変数を作成します。 block はブロックの数を、 roll は行数を保存します。

img/17_bri3.png

  • Block1 スプライトのクローンを作成し、左から右、上から下に1つずつ、合計4x8でランダムな色で表示する必要があります。

img/17_bri4.png

  • スクリプトを書き終えたら、緑のフラグをクリックしてステージ上の表示を確認します。もし、表示がコンパクトすぎるか小さすぎる場合は、サイズを変更できます。

img/17_bri5.png

  • トリガーイベントを書きます。クローン化された Block1 スプライトが Ball スプライトに触れると、クローンを削除し、 crush というメッセージをブロードキャストします。

img/17_bri6.png

  • Ball スプライトに戻って、 crush が受信された場合( Ball スプライトが Block1 スプライトのクローンに触れた場合)、 Ball は逆の方向にポップします。

img/17_ball7.png