2.18 ゲーム - ブレイクアウトクローン¶
このゲームでは、ポテンショメータを利用してブレイクアウトクローンゲームをプレイします。
緑のフラグをクリックした後、ポテンショメータでステージ上のパドルを操作してボールをキャッチします。ボールを上に移動させ、ブロックをヒットさせると、すべてのブロックが消え、ゲームに勝利します。ボールをキャッチしないと、ゲームに敗北します。
必要な部品¶
このプロジェクトで必要となる部品は以下のとおりです。
一括でキットを購入することがおすすめです。以下のリンクを参照してください:
名前 |
このキットのアイテム |
リンク |
---|---|---|
3 in 1 Starter Kit |
380+ |
以下のリンクから部品を個別に購入することも可能です。
コンポーネントの紹介 |
購入リンク |
---|---|
回路の作成¶
ポテンショメータは3端子の抵抗素子です。2つのサイドピンは5VとGNDに接続し、中央のピンはA0に接続します。ArduinoボードのADCコンバータを使用して変換した後、値の範囲は0-1023となります。
プログラミング¶
ステージには3つのスプライトが存在します。
1. パドルスプライト
Paddle の目的は、ステージの底の中央に初期位置があり、ポテンショメータで左右に動かすことです。
デフォルトのスプライトを削除し、 Choose a Sprite ボタンで Paddle スプライトを追加して、xとyの位置を(0, -140)に設定します。
Costumes ページに移動して、アウトラインを削除し、色を濃い灰色に変更します。
緑のフラグがクリックされたとき、 Paddle スプライトの初期位置を(0, -140)に設定し、A0の値(ポテンショメータ)を変数 a0 に読み取ります。 Paddle スプライトはx座標 -195~195で左右に移動するため、[map]ブロックを使用して、変数 a0 の範囲0~1023を-195~195にマッピングします。
ポテンショメータを回して、ステージ上で Paddle が左右に動くかを確認します。
2. ボールスプライト
ボールスプライトの動作は、ステージを移動し、端に触れると跳ね返ります。ステージの上のブロックに触れると下に跳ね返り、落下中にパドルスプライトに触れると上に跳ね返ります。そうでない場合は、スクリプトの実行を停止し、ゲームが終了します。
Ball スプライトを追加します。
緑のフラグをクリックすると、 Ball スプライトの角度を45°に設定し、初期位置を(0, -120)に設定します。
さて、 Ball スプライトをステージの周りに移動させ、端に触れると跳ね返るようにします。緑のフラグをクリックして効果を確認してください。
Ball スプライトが Paddle スプライトに触れた場合、反射を行います。これを簡単に実行する方法は、角度を直接反転させることですが、それを行うとボールの軌道が完全に固定されてしまい、非常に退屈になります。したがって、2つのスプライトの中心を使用して計算し、バッフルの中心の反対方向にボールを跳ね返すようにします。
Ball スプライトがステージの端に落ちると、スクリプトの実行が停止し、ゲームが終了します。
3. Block1 スプライト
Block1 スプライトは、ステージの上で自身の4x8のクローンをランダムな色で表示し、 Ball スプライトに触れられるとクローンを削除する効果があります。
Block1 スプライトは PictoBlox ライブラリには含まれていないので、自分で描くか、既存のスプライトを修正する必要があります。ここでは Button3 スプライトを使って修正します。
Button3 スプライトを追加した後、 Costumes ページに移動します。まず button-a を削除し、 button-b の幅と高さを縮小し、スプライトの名前を Block1 に変更します。
注釈
Block1 の幅については、画面上で8つ並べることができるかどうかをシミュレートして確認してください。できない場合は、幅を適切に縮小してください。
Block1 スプライトを縮小する過程で、中心点をスプライトの中央に保持する必要があります。
まず2つの変数を作成します。 block はブロックの数を、 roll は行数を保存します。
Block1 スプライトのクローンを作成し、左から右、上から下に1つずつ、合計4x8でランダムな色で表示する必要があります。
スクリプトを書き終えたら、緑のフラグをクリックしてステージ上の表示を確認します。もし、表示がコンパクトすぎるか小さすぎる場合は、サイズを変更できます。
トリガーイベントを書きます。クローン化された Block1 スプライトが Ball スプライトに触れると、クローンを削除し、 crush というメッセージをブロードキャストします。
Ball スプライトに戻って、 crush が受信された場合( Ball スプライトが Block1 スプライトのクローンに触れた場合)、 Ball は逆の方向にポップします。