前回は、条件分岐と5つのプログラム例についてご紹介しましたが、今回はScratch(スクラッチ)のプログラミング、今回はスクラッチで簡単なゲームを作ってたいと思います。
まず、ゲーム制作でよく使われる「変数」と「乱数」の考え方やスクラッチでのブロックの使い方について解説します。
その後、ゲームを作成する流れ、スクラッチでのプログラミング方法を解説します。
ゲーム作成を通して、少し複雑(ふくざつ)なスクラッチでのプログラミングに、楽しんでチャレンジしましょう!
まずはスクラッチの変数について知ろう
変数は、プログラミングではとてもよく使われるアイテムです。簡単に言えば、値を入力する箱のようなものです。
スクラッチのプログラム内でも色々な使い方ができます。
例えば、今回作成するゲームでは、得点を数える時に使います。複数のスプライトがそれぞれのプログラム内で、得点を数えるための変数の値を変えることによって、得点を追加していくことができます。
今回作るゲームでは、今から解説する「変数」を使うので、使い方や働きについて知っておきましょう。
変数の作り方
➀ブロックエリアの「へんすう」をクリックします。
➁「へんすうをつくる」をクリックします。
➂「あたらしいへんすうめい」を入力して、他のスプライトのプログラムで使う場合は「すべてのスプライトよう」にチェックします。他のスプライトで使わない場合は「このスプライトのみ」でよいでしょう。
スクラッチの中ではその変数の値がステージ上に表示されています。非表示にすることもできます。
変数を作るとコードエリアに変数が表示されます(➀参照)。変数名の横のチェックボックスをオン(青になる)にになっていて、ステージ左上に表示されています(➁参照)。
変数がプログラム内で使用方法については、後半の記事「ゲームプログラムを作ってみよう」を参照してください。
演算ブロックの使い方
演算ブロックはプログラムの中で計算する、条件分岐文の条件の設定、乱数を使うなど、複雑なプログラム内でよく使われるブロックです。
その中でも今回作成するゲームでは、【〇から〇までのらんすう】ブロックを使うので、「ランダム性と乱数(らんすう)」という考え方について簡単に説明します。
ランダム性と乱数(らんすう)
「ランダム性」という考え方はコンピューターサイエンスにおいて、重要な考え方です。
「ランダム性」というのは規則がない、不規則な状態です。例えばサイコロの目の出方と考えると分かりやすいかもしれません。その「ランダム性」を実現するひとつの方法として「乱数」が利用されます。
スクラッチではその「ランダム性」を演算ブロックの【〇から〇までのらんすう】ブロックで実現することができます。
プログラム例
おばけ(Ghoast)が10回、ランダムな座標に現れるプログラムです。
スプライトのおばけ(Ghoast)を作成します。
うごきブロック【Xざひょうを●、yざひょうを●にする】の●に演算ブロックの【〇から〇までのらんすう】を入れます。
〇の数字におばけがランダムに現れる範囲の数値を入力します。今回はXざひょうは90と-90、yざひょうは160と-160を入力します。
おばけはステージのXざひょう90と-90、yざひょう160と-160の範囲内のランダムな位置に出現します。
画像のプログラムを参考に作成して、動かしてみてください。また、数値を変更して、動作を確認してみましょう。
スクラッチで作るゲームについて
ゲームを作成するためには、まずはゲーム内容を決めていきます。といっても、最初はなかなか思いつかないと思います。そういう時は、今までやったことのあるゲームを参考に考えてみてください。
スクラッチでは公開されているプロジェクトを動かしたり、プログラムを見ることができます。
次にスプライトの種類や背景などの動きを考え、ゲームの流れを決定します。
最初から細かいゲーム内容を決めていくのは難しいので、大まかな枠は決めて、あとはプログラムを作って動作を確認しながら、付け加えていくのもよいでしょう。
ゲーム内容を考えよう
フルーツあつめゲーム
さる(Monkey)を左右矢印キーによって動かし、上から落ちてくるバナナ(Bananas)、りんご(Apple)、みかん(Orange)をゲット(触れる)して得点を競うゲーム。
上から落ちてくるバナナをゲットする(触れる)と3点。りんごは2点とオレンジは1点。バスケットボールに触れたら、ゲームオーバーにする。
ゲームを面白くするポイント
➀スプライトごとに落ちるスピードを変える
バナナはゲットを難しくするため、バスケットボールは避けにくくするためにスピードを速くする。
➁スプライトの出現する頻度(ひんど)を変える
・得点の高いバナナは出現する頻度を少なくする。
避けるアイテムのバスケットボールは、ゲームを面白くするために多くする。
・乱数を使って出現する場所もランダムに出現させる。
ゲームの流れとスプライトの動きを考えよう
スクラッチでは、スプライトごとにスプライトの動きをプログラミングします。
「ゲームスタート時」「ゲーム進行中」「ゲーム終了時」に分けて、さる(Monkey)、バナナ(Bananas)、りんご(Apple)、みかん(Orange)、バスケットボール(Basketball)の動きの整理とそれを実現するためのプログラム内容を考えます。
ゲームスタート時にする動き
ゲームスタート時にはゲームが始まるための準備、例えば変数のリセットなどの処理が必要です。
スプライトごとに、ゲームが始まる時の必要な動きや処理を考えます。
さる(Monkey)の動きについて
・予め、変数「スコア」を作成する。「スコア」をリセットする
・サイズを調整する
・スタート位置を座標できめる
・ゲームスタートのセリフを表示する
・各スプライトにゲームスタートのメッセージを送る
バナナ(Bananas)、りんご(Apple)、みかん(Orange)、バスケットボール(Basketball)の動きを考えよう
・ゲームスタートボタンが押された時に前のゲーム時に残っているスプライトを非表示にする
・サイズをスプライトごとに調整する
ゲーム進行中の動きを考えよう
ゲームのメインの動きを考えます。
さる(Monkey)の動き
・左右矢印キーが押されたら、5歩ずつ動かす
・さるが動いているように見せるため、コスチュームを変える
バナナ(Bananas)、りんご(Apple)、みかん(Orange)の動き
・ゲームスタートからすぐに表示されないように、各スプライトごとにタイミングをとるように数秒待つ
・各スプライトのスタート位置を決める。y座標(縦位置)は固定で、x座標を乱数を使ってランダムな位置から出現するようにする。
・Y座標をマイナス数値ずつ変えることにより落下するように表示される。速度をスプライトごとに設定する。
さるに触れた時の動きを考えよう
・音をならして、変数「スコア」をバナナ3点、りんご2点、みかん1点ずつ変える
・スプライトを非表示にする
・乱数でランダムな時間待ち、位置を決め、表示させる
端(ステージの下)に触れた時の動き
各スプライトを非表示にし、乱数でランダムな時間を待ち、表示する
バスケットボール(Basketball)の動きを考えよう
・ゲームスタートからすぐに表示されないように、6秒待つ
・各スプライトのスタート位置を決める。y座標(縦位置)は固定で、x座標を乱数を使ってランダムな位置から出現するようにする。
・Y座標をマイナス数値ずつ変えることにより落下するように表示される。速度をスプライトごとに設定する。
端(ステージの下)に触れた時の動き
バスケットボールをかくし、乱数でランダムな時間待ち、表示する
ゲーム終了時の処理を考えよう
ゲーム終了の処理はさるがバスケットボールに当たった時に行います。
バスケットボール(Basketball)の動き
・さるに触れた時、音を鳴らし、ゲームオーバーのセリフを言う
・すべてをとめる
スクラッチでゲームのプログラムを作ってみよう
「ゲームの流れを考えよう」を参考にプログラムを作成します。
バナナ(Bananas)、りんご(Apple)、みかん(Orange)はほとんど同じプログラムになります。
スプライトを用意しよう
背景は「Blue Sky」に設定する
さる(Monkey)、バナナ(Bananas)、りんご(Apple)、みかん(Orange)、バスケットボール(Basketball)を作成する
ゲームスタート時のプログラムを作ろう
さる(Monkey)のスタート時のプログラム
➀変数「スコア」を作る。へんすうブロック【スコアを0にする】を入れる。
➁さるのサイズを調整。みためブロック【おおきさを70%にする】にする。
➂さるのスタート位置決める。うごきブロック【xざひょうを0、yざひょうを-120にする】にする。
➃ゲームスタートのメッセージを表示。みためブロック【〇と1びょういう】の〇にスタートのメッセージ「フルーツをあつめてね!バスケットボールにあたらないでね!」と入力する。
➄イベントブロック【メッセージ1をおくる】を入れる。各スプライトはメッセージ1を受取った後、ゲームの動きをするようにプログラミングする。
バナナ(Bananas)、りんご(Apple)、みかん(Orange)、バスケットボール(Basketball)のスタート時のプログラムを作ろう
➀ゲームスタートボタンが押された時、みためブロック【かくす】を入れる。
➁それぞれのスプライトのサイズを調整。みためブロック【おおきさを〇%にする】〇に数値を入力する。
※バナナは70%にしました。他のスプライトも調整してみてください。プログラム例と同じでなくても大丈夫です。
ゲーム進行中のプログラムを作ろう
さる(Monkey)のゲーム進行中のプログラムを作成する
まず、右向きやじるしで動くプログラムを作成します。
➀せいぎょブロック【ずっと】の中に
➁せいぎょブロック【もし~なら】の~に<みぎむきやじるしがおされたとき>を入れる
➂うごきブロック【5歩うごかす】を入れる
➃みためブロック【つぎのコスチュームにする】を入れる
左向きやじるしの動きのプログラムは、上の右向きやじるしのプログラムをコピーして、変更すると簡単にできます。
コピーする方法はもし<みぎむきやじるしがおされたとき>なら】の上にマウスを合わせて、右クリックします。「ふくせい」をクリックして、置きたい場所をクリックします。
せいぎょブロック【もし~なら】の~を<ひだりむきやじるしがおされたとき>に変更します。
うごきブロック【〇歩うごかす】の数値を-5に変更します。
バナナ(Bananas)、りんご(Apple)、みかん(Orange)のゲーム進行中のプログラム
バナナ(Bananas)のプログラムを参考にして、解説します。
➀イベントブロック【[メッセージ1]をうけとったとき】を入れる。
➁出現するまでの時間を決める。せいぎょブロック【〇びょうまつ】で、バナナ7秒、りんごとみかんは3秒にする。
➂各スプライトのスタート位置を決める。うごきブロックの【xざひょうを〇、yざひょうを〇にする】でx座標にはえんざんブロック<-200から200までのらんすう>を入れる。
➃ゲームスタート時で非表示にしているので、表示する。みためブロック【ひょうじする】を入れる。
➄せいぎょブロック【ずっと】の中に
➅うごきブロック【y座標を-〇ずつかえる】でy座標をマイナスの数値ずつかえていくことによって、下に落ちるように動いていく。速度をスプライトごとに設定する。
※マイナスの数値が大きいほど落下するスピードが速くなります。落下するスピードはゲームを面白くするポイントになるので、プログラム例を参考に他のスプライトも色々試してみてください。
さる(Monkey)に触れた時の動きのプログラムについて
➆せいぎょブロック【もし<>なら】の条件に調べるブロックの<Monkeyにふれた>を入れる。
➆-1へんすうブロック【スコアを〇ずつかえる】を入れる。〇の数値はスプライトごとに設定する。
➆-2おとブロック【〇のおとをならす】を入れる。〇の音はスプライトごとに選択する。
➆-3みためブロック【かくす】を入れる。
➆-4うごきブロック【xざひょうを〇、yざひょうを〇にする】で次のスタート位置をきめる。ランダムな位置から表示されるようにx座標にはえんざんブロック<-200から200までのらんすう>を入れる。
➆-5次に出現するまでの時間を決める。せいぎょブロック【〇びょうまつ】の〇にえんざんブロック<●から●までのらんすう>を入れる。●はそれぞれのスプライトごとに決める。
※バナナは得点が高いので、出現する回数を少なくなるように大きな数字を入れる。スプライトを出現する回数はゲームを面白くするポイントになるので、他のスプライトもプログラム例を参考に色々試してみてください。
➆-6みためブロック【ひょうじする】を入れる。
ステージの下に触れた時の動きのプログラム
➇せいぎょブロック【もし<>なら】の条件に調べるブロックの<はしにふれた>を入れる。
➇-1みためブロック【かくす】を入れる。
➇-2うごきブロックの【xざひょうを〇、yざひょうを〇にする】で次のスタート位置を決める。x座標にはえんざんブロックの<-200から200までのらんすう>を入れる。
➇-3次に出現するまでの時間をせいぎょブロックの【〇びょうまつ】の〇にえんざんブロックの<●から●までのらんすう>を入れる。●はそれぞれのスプライトごとに決める。
※バナナは得点が高いので、出現する回数を少なくなるように大きな数値を入れています。スプライトを出現する回数はゲームを面白くするポイントになるので、他のスプライトもプログラム例を参考に色々試してみてください。
➇-4みためブロック【ひょうじする】を入れる。
バスケットボール(Basketball)のゲーム進行中のプログラム
➀イベントブロック【[メッセージ1]をうけとったとき】を入れる
➁出現するまでの時間を決める。せいぎょブロック【〇びょうまつ】で、バスケットボール(Basketball)は6秒にする。
➂スタート位置を決める。うごきブロックの【xざひょうを〇、yざひょうを〇にする】でx座標にはえんざんブロック<-200から200までのらんすう>を入れる。
➃ゲームスタート時で非表示にしているので、表示する。みためブロック【ひょうじする】を入れる。
➄せいぎょブロックの【ずっと】の中に
➅うごきブロック【y座標を-〇ずつかえる】でy座標をマイナスの数値ずつかえていくことによって、下に落ちるように動いていく。数値を-7にする。
※マイナスの数値が大きいほど落下するスピードが速くなります。バスケットボールの落下スピードが速い方がゲームが難しくなります。
ステージの下に触れたときのプログラム
➆せいぎょブロック【もし<>なら】の条件に調べるブロックの<はしにふれた>を入れる。
➆-1みためブロック【かくす】を入れる。
➆-2うごきブロックの【xざひょうを〇、yざひょうを〇にする】でスタート位置を決める。x座標にはえんざんブロックの<-200から200までのらんすう>を入れる。
➆-3次の出現するまでの時間を決める。せいぎょブロックの【〇びょうまつ】の〇にえんざんブロックの<1から2までのらんすう>を入れる。
※バスケットボールは触れるとゲーム終了するので、出現するまでの時間が短い方がゲームが難しくなります。
➆-4みためブロック【ひょうじする】を入れる。
ゲーム終了時のプログラムを作ろう
バスケットボール(Basketball)がさる(Monkey)に触れたときの処理でゲームを終了させます。
➀せいぎょブロック【もし<>なら】の条件にしらべるブロック<Monkeyにふれた>を入れる。
➁おとブロック【〇のおとをならす】を入れる。〇は「basketball」にする。
➂ゲームオーバーのメッセージを表示します。みためブロックの【〇と●びょういう】の〇に「ゲームオーバー!」とメッセージを入力し、●の時間は0.5秒にする。
➃せいぎょブロック【すべてをとめる】を入れる。
スクラッチでプログラミングしたゲームを動かしてみよう
ゲームを動かしてみて、決めたゲーム内容に合った動きをするかをテストしてみましょう。
・さる(Monkey)は左右のキーでスムーズに動くか。
・フルーツのスプライトに触れたときに「スコア」が正しく増えているか。
・バスケットボールに触れたとき、ゲーム終了するか。
プログラムが正しい動きをするまで、頑張って修正しましょう。この作業がとても大事なことです。
また、ゲームを面白くする工夫を色々考えてみましょう。
まとめ
今回はスクラッチでゲーム作りにチャレンジしました。
今回作成したプログラムのプロジェクトはこちらから確認することができます。
アクセスして、ゲームを動かしてみたり、プログラムを参考に色々なアレンジして、面白いゲームの作成にチャレンジしてください。
プログラミング教室なら親のサポートは不要。また、オンライン対応の教室なら送迎もいらないので負担は少なくなります。
無料体験学習を開催する教室もあるので、気なる方は是非チェックしてみてくださいね。
コメント