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

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

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

../_images/17_brick.png

必要な部品

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

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

名前

このキットのアイテム

リンク

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

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

コンポーネントの紹介

購入リンク

SunFounder R3ボード

BUY

ブレッドボード

BUY

ジャンパーワイヤー

BUY

ポテンショメータ

BUY

回路の作成

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

../_images/potentiometer_circuit.png

プログラミング

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

1. パドルスプライト

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

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

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

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

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

2. ボールスプライト

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

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

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

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

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

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

../_images/17_ball5.png

3. Block1 スプライト

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

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

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

注釈

  • Block1 の幅については、画面上で8つ並べることができるかどうかをシミュレートして確認してください。できない場合は、幅を適切に縮小してください。

  • Block1 スプライトを縮小する過程で、中心点をスプライトの中央に保持する必要があります。

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

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

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

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

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

../_images/17_ball7.png