ブロック崩し(基本編)

ブロック崩しのゲームを組み立ててみます。

この 基本編 のプログラムは,プロジェクトページでは 公開していません。
必要な方は,本ページの下方(ステージの説明欄)に,ダウンロードの用のリンクを作りましたので,
これをご利用下さい。

スプライト一覧

ブロック崩しの基本編で登場するスプライトは,次の通りです。

 

Paddle ・・・ 左右に動かして,上から落ちてくるボールを跳ね上げる パドル です。
ball ・・・ ステージ内を飛び回り,ブロックを崩す ボール です。
Block ・・・ 黄色い ブロック で,ボールが当たるとブロックは消えます。

 

このゲームの目的は,パドルでボールを跳ね上げて,すべてのブロックを消すことです。

 

あと,ステージには,背景画像を用意し, ゲーム音楽を鳴らします。

 

それでは,各スプライトを順次,作成してみましょう。

パドル(Paddle)

まずは,パドルのコスチュームを作成します。
下の図のように,中心より少し上側に長方形を書きます。

 

scratch

 

次にパドルのスクリプトです。
スクリプトでは,パドルが左右のみに動くことを指定し,初期位置として,ステージの下側中央 ( 0, -160) に配置します。
あとは,右向き矢印キー または 左向き矢印キー が押されたときに,左右に動くように,x 座標を増減します。

 

scratch

ボール(ball)

次にボールのスプライトを作成します。

 

コスチュームは,Scratch に用意されたボールやボタン等の画像を適当に選びます。
ただ,予め用意されたボール等の画像は ブロック崩し用には大きすぎるので,下の図のように,スプライトの大きさを小さくしておきます。
下の例では,大きさの欄に 30 を設定して,元々用意された画像の 30% の大きさで表示されるようにしています。

 

scratch

 

次に ボールのスクリプトです。
scratch
このスクリプトは次のように動作します。
緑の旗が押されると,画面上部中央から,ランダムな角度で下に移動をはじめます。
もし,壁にあたったら跳ね返り,パドルに当たったら,跳ね返り方向を求めて,跳ね返り動作をします。(この辺りは後述します。)
ステージの最下部に落ちたら,ゲーム終了(GameOverメッセージを送信)です。
GameOverメッセージを受け取るのは,ステージです。

 

あと,ボールがブロックに当たると「HITメッセージ」が送られてくるので,ボールの跳ね返り動作を行います。

ブロック

ブロックを作ります。

 

横に 10 個並べたいので,少し小さめの長方形を書きます。今度は,パドルと違い,長方形の中心がキャンパスの中心になるように描きます。
scratch

 

ブロックのスクリプトは次の通りです。
scratch
横に 10 個並べたいので,クローンとして実装します。
緑旗がクリックされたら,左上側から右方向に移動しながら,10個のクローンを作成します。クローン作製時は隠しておきます。
クローンされたら,表示し,ball に触れるのを待ちます。そして,ボールにふれたら,HIT メッセージを送り,効果音をを鳴らし,残りブロック数変数を1減らします。
もし,残りブロック数が0になったら,clearメッセージを送ります。
ここで,上記の HIT メッセージは,ボールが受け取り,これをトリガにボールは跳ね返り動作をします。
clear メッセージは,ステージで受け取り,背景画像の変更と終了処理をします。

ステージ

ステージの設定です。

 

ステージでは,ゲーム音を鳴らし,背景画像の表示を制御します。
ゲーム音は,Scratchに予め用意された「Chill」という音楽を使っています。
背景は,通常のゲーム時は,Scratchに予め用意されている「Night City」
ゲームクリア時とゲームオーバー時の背景は,自分で文字を使って描画しています。

 

ブロック崩し 基本のダウンロード

解説(基本編)

【ボールがパドルに当たったときの,ボールの跳ね返り方について】

 

壁にあたっときと同じように跳ね返ると,場合によっては,ボールが同じ平行四辺形を,グルグル回ってしまい,ゲームが終わらなくなる場合も考えられます。

 

scratch

 

そこで,この問題に対して,ブロック崩しでよく使われる技が,パドルに当たっときの跳ね返り方(跳ね返り角度)を,ボールがパドルに当たった位置によって変える方法です。慣れてくると,ある程度,狙い撃ちの跳ね返しができるようになります。
跳ね返しの角度をランダムに変える方法もありますが,ゲームの難易度が上がるので,ここでは,当たった場所によって,跳ね返り方が違ってくるやり方を紹介します。
簡単な方法として,ボールの跳ね返し方法を,パドルの中心から放射状にすることを説明します。

 

scratch

 

上の図のように,当たった位置によって,ボールが放射状に跳ね返るようにするには,ボールが当たったことを(ボールがパドルに触れたこと)を検出したときに,いったん,現在の向きをパドルの中心に向けたあと,180度回転させればよいです。こうすれば,ボールがどの方向から飛んできて,パドルにあたっても,ボールは当たったパドルの位置にしたがって,放射状に跳ね返されます。
ただし,この方法だとパドルの中心が,パドルの内部にあり,パドルの側面に当たったとき,ボールが真横に跳ね返されることになります。もしそうなったら,この場合も,ゲームが終わらなくなる原因になってしまいます。

 

scratch

 

これを防ぐための方法(どこにあたっても,水平方向に跳ね返らない方法)として,簡単に実装する方法は,下図のように,パドルの中心座標をパドルの外側(下側)にとることです。ボールは,パドルの上面 または 左右側面 にあたりますが,中心からそれらの面に放射状に伸びる線を描くと,全体が上方向に跳ね上がることになります。

 

scratch

コメントリンク

この記事について,コメントがありましたら,下記のリンクから投稿してください。

 

コメント投稿

スポンサー リンク