【Scratch】<応用編>4-1 恐竜探しゲームを作ろう!(リストってなに?/作り方と使い方その1)

・リストってなに?
・リストの作り方、使い方
・リストを使ったゲーム作り(その1) など。
こんにちは、Anksです。今回もみなさまよろしくおねがいします。
前回<入門編>3-4 フルーツをキャッチするゲームを作ろう!(スコア/得点表示)までの内容に続いて、
今回のチャプターからは<応用編>を進めていきます。
まずは、今回作っていくプロジェクトを見て行きましょう!
旗のボタンをクリックすると時間がカウントされ始めます。画面のどこかに隠れた4匹の恐竜たちをクリックして全て見つけ出しましょう!見つける速さを競うゲームです。
見つけた都度、左上の「見つけた恐竜」という枠の中に、恐竜の名前が追加されるのに気づきましたか?
これは、スクラッチのリストという機能を使っています!
さっそく、まずはリストについて学んでいきましょう。

○リストってなに?

「リスト」というのは、簡単に言うと、番号(順番)の付いた変数の集まりのようなもの、と思っていただけると良いと思います。

変数は、ひとつの箱を用意して、そこに一つの数値や文字列を入れておくことしかできませんでした。

リストなら、いくつもの箱を並べておいて、
そこに複数の数値や文字列を順番に入れておくことができる
というわけです。

下の図を見てください。

【Scratch】スクラッチ リスト「フルーツ」のイメージ

これは、「フルーツ」という名前のリストを作り、4番目までフルーツの名前(文字列)を入れたイメージ図になります。

リスト「フルーツ」の番目 : りんご
リスト「フルーツ」の番目 : バナナ
リスト「フルーツ」の番目 : オレンジ
リスト「フルーツ」の番目 : スイカ

という感じですね。

まずは、練習として、スクラッチ上でこのリストを作ってみましょう!

Anks
すでに作り方を理解している方は、
下部の、リストを使ったゲーム作りの項目に進んでください。

○リストの作り方

リストを作るには、「変数」欄にある「リストを作る」をクリックします。

【Scratch】スクラッチ リストを作る

すると、新しいリストを作る入力フォームが出るので、

【Scratch】スクラッチ リスト名を入力する

新しいリスト名に「フルーツ」と入力して、OKをクリックしましょう。

 

【Scratch】スクラッチ リスト作成後

すると、上の図のように、コード欄にリストに関するブロックが追加され、
ゲーム画面上には新しく作った「フルーツ」というリストが表示されています。

まだ、中身は(空)となっていますね。

項目を追加するには、枠の左下の「+」のマークをクリックしましょう。

【Scratch】スクラッチ リストの項目を追加

すると、1番目の項目が追加され、入力ができるようになるので、
「りんご」と入力してみましょう。

【Scratch】スクラッチ リスト 項目の入力

りんごの入力ができたら、ふたたび「+」のボタンで項目を追加していき、
「バナナ」、「オレンジ」、「スイカ」を入力しましょう。

【Scratch】スクラッチ リスト 4つの項目の追加

これで、先ほどイラストで紹介した、フルーツのリストが完成しました!

下部に書いてある「長さ4」というのは、リストの中の項目が4つありますよ、と言う意味です。

 

また、リストの項目は、以下の「なにかをリストに追加する」や「リストの1番目になにかを挿入する」ブロックを使っても追加できます。

【Scratch】スクラッチ リストに追加するブロック

フルーツの例で言うと、「なにか」の部分に、「りんご」、や、「バナナ」を入力して使うことになります。

 

今回のゲームでは、この「なにかをリストに追加する」ブロックを使っていきましょう!

なお、作る前に、一度この練習用のフルーツのリストは削除します。
削除の仕方は、リスト名の上で右クリックから行うことができます。
【Scratch】スクラッチ リストの削除

フルーツの削除が完了したら、さっそく作っていきましょう!

○リストを使ったゲーム作り

まずは、背景とスプライトから設定していきます。

背景は、「Jurassic」、
スプライトは「Dinosaur1」「Dinosaur2」「Dinosaur3」「Dinosaur4」を追加しましょう。

【背景】
【Scratch】背景「Jurassic」

【スプライト】
【Scratch】スプライト「Dinosaur1」 【Scratch】スプライト「Dinosaur2」 【Scratch】スプライト「Dinosaur3」 【Scratch】スプライト「Dinosaur4」

スプライトが少し大きいので、大きさはそれぞれ90に設定します。
Dinosaur1から4のスプライト名は、それぞれ、
「ブラキオサウルス」「トリケラトプス」「プテラノドン」「ティラノサウルス」にしました。

ねこのスプライトは削除しておきましょう。

 

スプライトの設定が終わったら、新しく、「見つけた恐竜」というリスト名のリストを作ります。

【Scratch】スクラッチ 背景とスプライト、リスト設定後

追加後、背景とそれぞれのスプライト、リスト「見つけた恐竜」が表示されていれば準備完了です。

次は、スプライト(ブラキオサウルス)のスクリプトを作っていきましょう。

○恐竜たちのスクリプト

今回のゲームでは、旗が押されたときに恐竜たちはランダムな位置に隠れます。

そこで、まず「旗が押されたとき」に「隠す」ようにして、
乱数を使って恐竜のX座標とY座標の範囲を指定します。

【Scratch】スクラッチ ランダムな位置にスプライトを隠す

ここでは、X座標とY座標のブロックを分けていますが、

これは単にわかりやすくするためだけの理由なので、
「X座標を~に、Y座標を~にする」のブロックを使っても大丈夫です。

 

また、完全に画面上のランダムな位置でも良い場合は、「どこかの場所へ行く」というブロックも使えます。
【Scratch】スクラッチ どこかの場所へ行く ブロック

この「どこかの場所」というのは、画面全体、つまり、

X座標:-240から240の範囲
Y座標:-160から160の範囲

ということです。

 

ただ、今回は、このブロックを使うと、
画面外やリストの裏に恐竜のスプライトの多くの部分がはみ出て隠れてしまうことがあるので、

このブロックは使わずに、
X座標を-110から150、Y座標を-120から120の範囲の乱数にしています。

 

乱数まで設定できたら、次はスプライト(ブラキオサウルス)をクリックしたときのプログラムを作っていきましょう!
隠れた恐竜を見つけた時のスクリプトです。

○隠れた非表示のスプライトのクリック

通常、スプライトをクリックしたときのスクリプトは、
このスプライトが押されたとき」のブロックを使うことが多いですが、

【Scratch】スプライトが押されたときブロック

「隠す」ブロックなどで隠れたスプライトをクリックしても、このブロックは反応しません。

 

そこで、
<応用編>5-1 隠れた非表示のスプライトをクリックして表示する方法で紹介している、
隠れた非表示のスプライトでもマウスをクリックしたときに一度だけ反応する、以下のスクリプトを使います。

【Scratch】スクラッチ 非表示のスプライトをクリックするプログラム

この中に、実行したいブロックを追加していきましょう!

 

まず、クリックが成功したら、

①クリックした恐竜(ブラキオサウルス)を最前面へ表示させ、
②リスト「見つけた恐竜」にブラキオサウルスを追加させるようにします。

【Scratch】スクラッチ クリックしたら最前面に表示しリストに追加

そして、
恐竜を見つけた後に再度このスクリプトが作動して、リストに同じ恐竜が追加されたりしないように、
③の「このスクリプトを止める」を入れておくのを忘れないようにしましょう。

 

ブラキオサウルスのスクリプトはこれで完成です!

他の恐竜たちも、違いはリストに追加する恐竜の名前だけなので、
このスクリプトをコピーして作っていきましょう。

○スクリプトの複製(コピー)

前回<入門編>3-4 フルーツをキャッチするゲームを作ろう!では、
りんごのスプライト自体を複製して他のバナナやボールのスプライトを作っていきましたが、

今回は、スクリプトをドラッグ&ドロップして、他の恐竜にも複製(コピー)していきます。

 

やり方は、
「旗が押されたとき」についているブロックのかたまりをまるごとドラッグして、

【Scratch】スクラッチ スクリプトのコピー(複製)

別のスプライト(=トリケラトプス)の上に、まとめてドロップします。

 

【Scratch】スクラッチ 別のスプライトに複製されたスクリプト

すると、別のスプライト(トリケラトプス)に、ブラキオサウルスのスクリプトが複製されます。

リスト「見つけた恐竜」に追加する名前は、
スプライトと同じ恐竜の名前(=トリケラトプス)に書き換えましょう。

【Scratch】スクラッチ リストに追加する名前を変更

これで、トリケラトプスへのスクリプトの複製は完了です。

 

Anks
スクリプトの位置が見づらい場合は、右下の【Scratch】スクラッチ 位置を調整「=」ボタンのボタンを押すと調整されて見やすくなりますよ!

残りの、プテラノドンとティラノサウルスも、同じようにスクリプトを複製して、
リストに追加する恐竜の名前をそれぞれ書き換えてください。

 

すべての恐竜への設定が完成したら、一度プログラムを実行してみましょう!

【Scratch】スクラッチ 各恐竜のスクリプト設定後

それぞれの隠れた恐竜をクリックしたときに姿が現れて、リストに名前が追加されていれば、
恐竜のスクリプトは完成です。

なお、下の図のように、画面内に表示されているリストの枠の大きさを調整すると、恐竜の名前が見切れないで済みます。

【Scratch】スクラッチ リストの枠の大きさの調整

リストの左下の「=」が書いてあるあたりにカーソルをあわせると、「⇔」(両矢印)のマークが出るので、サイズが調整できます。

 

また、このままだと、ゲーム開始時にリストに恐竜が残ったままになってしまうので、

今回は、時間のカウントやゲームクリアのプログラムなどと一緒に、
背景にスクリプトを設定していきます。

○時間のカウントとゲームクリア

スクラッチでは、他のスプライトと同じように、
背景にもスクリプトを設定していくことができます。

【Scratch】スクラッチ 背景へのスクリプトの設定

方法も、他のスプライトへのブロックの配置と同じです。

右下の「ステージ」から背景を選択し、真ん中の欄にブロックを配置していきます。
(ただし、背景には「動き」ブロックは使うことができません。)

 

最初に、
旗が押されたときのリストの初期化(空っぽの状態にする)とゲームクリアから作っていきましょう!

【Scratch】スクラッチ リストの初期化(すべてを削除)

まず、リストの中身をすべて削除するには、「~のすべてを削除する」ブロックを使います。

 

そして、ゲームクリアは4匹の恐竜を見つけたときです。

このときに、見つけた恐竜リストの長さ(項目の数)は4になっているはずなので、

「リストの長さ」のブロックを使って、
ゲームクリアの条件を以下のようにプログラムすることができます。

【Scratch】スクラッチ ゲームクリアのスクリプト

 

ここで、ゲームクリア時には、背景を切り替えることでクリアの演出をしておきましょう。

今回は、「Rays」の背景を使用しています。

【Scratch】スクラッチ 背景「Rays」

【Scratch】スクラッチ 背景の切り替え

元の背景への初期化(=Jurassicにする)のブロックも忘れずに追加しましょう。

これで、初期化とゲームクリアのスクリプトは完成です!

 

そして最後に、時間のカウントのスクリプトを背景に追加します。

今回は、<入門編>3-3 タイマーとストップウォッチを作ろう!(時間制限)で紹介した、
「タイマー」と変数を使ったシンプルな形です。

「時間」という名前の変数を新しく作って、常にタイマーと同じ値になるようにします。

【Scratch】スクラッチ 時間のカウントのスクリプトの追加

ゲームクリアしたときの「すべてを止める」処理によって、
タイマーのカウントは止まりませんが、「時間をタイマーにする」処理が止まります。

そのため、
時間のカウントがそこでストップするので、クリアタイムがちゃんとわかるようになっています。

 

あとはゲーム画面内の「時間」と「見つけた恐竜」の枠が重ならないように、
うまくドラッグ&ドロップで整えれば、プロジェクトは完成です!

【Scratch】4-1スクラッチ クリア完成画像

今回のチャプターでは、リストについての説明と、
主にリストの追加と削除の機能を使ったゲームの内容にしました。

無事、すべての恐竜を見つけて、ゲームクリアまで動きましたでしょうか?

 

次回のチャプターでは、リストの使い方をもう少し応用した内容のゲーム作りをしていきます!

今回もありがとうございました。

【Scratch】誰でもわかるスクラッチ入門 コンテンツ一覧 に戻る