キミも未来のトビラをひらこう!!
正解のアイテムを探す、アイテム探しゲームを作ろう
今回のレッスンで作るものを説明するよ。 今回は、ステージに様々なアイテムが置いてあって、 Picoの出す問題にそって アイテムをさがすゲームを作っていくよ!
このレッスンでは、これまで使ったことのないデータの中にある[リスト]という 機能を使っていくよ
変数や演算などのむずかしいブロックも使っていくから、分からないところは前のレッスンにもどったり、質問をして理解できるようにしていこう。 では、実際に作っていこう!
アニメーションにつかう背景・スプライトを用意して設定していこう
まずは、スプライトを確認するよ。 7つ設定されていればOKだよ。
アイテムのスプライトの位置はどこにおいても大丈夫だから、すきなようにうごかしてね。
次に、背景を確認しよう。
最後に、スプライトと背景を整えよう。 Picoは大きさを50にしよう。
ここまで、みんなの画面でもやってみよう!
リストをつかってデータを管理してみよう
今回作るのは、ステージ上に出ているアイテムから問題で出されたアイテムを探すというゲームだったね! ゲームを作る時に、新しく「リスト」という機能を使っていくよ。
リストは、いくつものデータ(文字や数字)をまとめて取り扱うための機能だよ。
前のレッスンで使った、変数という機能は、1つの情報(例:今の得点など)をおぼえておくことはできるんだけど、得点を数えていた時を思い出すと、1点ずつ得点は変わって、2つの数を同時におぼえておくことはできなかったよね? 「リスト」は2つ以上のデータをまとめておぼえることができる機能なんだよ。 たとえば、マンションをイメージしてみよう。 マンションは多くのお家があつまってできているよね?
例 101号室:山田さん家族が2人で住んでいる。 102号室:田中さんかぞくが5人ですんでいる。 101号室単体は変数のイメージで、山田さん家族が引っ越して、3人家族の小林さん家族が入ると、1つの部屋にいる人数は2人から3人に変わって、同じ部屋にすむことは、むずかしいよね?
ただ、マンションというかたまりで考えると、別の部屋に色々なかぞくがすんでいるように、複数のデータ(ここでは家族)をまとめることができているよね。 そしてデータにはそれぞれ番号(ここでは部屋番号)がついていて、データは順番にならんでいるよ。
これがリストの考え方だよ! イラストを見て、イメージしてみてね
このリストは、本格的なプログラミングでは「配列」ともよばれるけど、 Scratchでは「リスト」とおぼえておこう。 今回のレッスンでは、「リスト」をいくつかの使い方で使っていくよ。 まず、さいしょにステージ上からアイテムを選ぶ場面でリストを使ってみよう。 アイテムを選んだときに、選んだアイテムを「アイテムボックス」という名前の リストに入れるということにしよう。 今回のゲームでは、アイテムを3つ選ばせるよ。 6つのアイテムから選ばれた3つのアイテムをおぼえさせたいよね。 リストを活用することで、3つのちがったデータをかたまりとして管理できるよ。
実際にリストを使っていこう! データの中にある、[リストを作る] をクリックしてリストを作成しよう
「アイテムボックス」と名前をつけよう。
ステージの左上に、アイテムボックスと書かれたリストがでてきたね! これを「リストモニター」と呼ぶのでおぼえておこう
今の時点では、何のアイテムもえらんでいないから、アイテムボックスのリストは空になっているよね。 つぎに、このリストにアイテムが並ぶようにスクリプトを作っていこう。 まずは、 みかんのスプライトを選択。
今回、みかんのスプライトがクリックされた時に、「アイテムボックス」のリストにみかんを追加したいので、このスプライトがクリックされたときにデータ中にある [なにかをアイテムボックスに追加する] を使って、 みかんがアイテムボックスに入るようにしてみよう。
[なにか]では何のことかわからないので、[なにか]を「みかん」に変えてみかんがリストに入るようにしてね。 また、完成形のところでも見たように、クリックされてリストに入ったらスプライトはステージ上から隠すようにしておこう。
これで、みかんをクリックして、アイテムボックスに「みかん」が追加されるようになったね!
みかんのスプライトで作ったスクリプトをほかのスプライトにも反映させていこう! 1つずつ作ることもできるけど、数が多いので今回はスクリプトを複製をしていくよ
みかんで作ったスクリプトをPico以外のスプライトに複製するよ。みかんで作ったスクリプトのかたまりをドラッグして、左下のスプライトエリアにあるそれぞれのスプライトの上でドロップしよう。 そうすると、ドラッグしたスクリプトのかたまりが複製されるよ!
複製ができたら、それぞれのスプライトのスクリプトをひらいて、リストに追加するブロックのみかんの部分をそれぞれのスプライトの名前に変えていこう。 アイテムの名前を変えておこう。
これで、ステージ上のアイテムをクリック するとアイテムボックスにリストが作られる ようになったね!
グリーンフラッグがクリックされたら、スプライトとリストをスタートの状態になるように設定しよう
前のチャプターで、スプライトがクリックされた時にリストに入って、リストに入れたら スプライトを隠すようにしたけど、そのままだとずっと隠れたままになってしまうよね。
グリーンフラッグがクリックされて、ゲームがスタートしたらすべてのスプライトを表示するようにしていこう。 今回はメッセージの機能をつかって、表示ができるようにしていくよ。 まずは、 Picoのスプライトを選択しよう。
つぎに、Picoのスクリプトエリアに[グリーンフラッグが押されたとき]を追加して、更にメッセージを送るを追加しよう。この時メッセージの名前は「すべて表示」としておこう。
そして、それぞれのアイテムのスプライトの方で、すべて表示のメッセージをうけとったら、[表示する]を使ってステージ上にアイテムが表示されるようにしていくよ。 まずは、「みかん」のスプライトを選択しよう。
[メッセージを受け取ったとき]のブロックをスクリプトエリアに追加し、[表示する]と合わせて、スタートのタイミングでスプライトが表示されるようにしていこう。
複製したいスクリプトをドラッグ&ドロップでほかのアイテムのスプライトにも追加していこう! スクリプトを複製した時、複製先のスプライトのスクリプトエリアにすでにスクリプトがあると、ブロック同士がかさなってしまうから、それぞれのスクリプトエリアでかたまりを移動させてわかりやすいように表示しておこう。
すべてのスプライトにスクリプトを追加したら、グリーンフラッグが押されたときすべてのアイテムが表示され、スタートの状態を作ることができたね!
つぎに、スタートの時のアイテムボックスのリストについて設定をしていくよ。 アイテムボックスのリストの中には、クリックされたスプライトが入っていくようにしていたよね。
今のままだと、ゲームをスタートした時に、過去のゲームの時にリストに入れたアイテムでいっぱいになっちゃうよね。 このリストをスタートの時には、何も入っていない状態にするようにしてこう。 Picoのスクリプトエリアで、[すべて表示を送る]のあとに、データの中にある [アイテムボックスのすべてを削除する]を追加しよう。
これでスタートの準備は完成だよ!
リストをつかってゲームの正解を作ろう
Picoが出した問題に当てはまるアイテムを探して、それが正しい選択だったときは正解・まちがった選択だったときは不正解というゲームだったよね。 今回、正解かどうか?を判別するためにもリストを使っていくよ。
まずは、アイテムの中からくだものをえらぶ、くだもの探しゲームの正解を作っていこう。 データの中で、新しく「くだもの答え」というリストを作ってみよう。 今回、3つのくだものをリストに追加しよう。
さいしょに作ったリストは、スプライトがクリックされた時にリストにデータが 入るように設定したけれど、リストはさいしょから自分ですきなデータを入れておくこともできるんだよ。 追加したリストのリストモニターがステージの左側に表示されるから、ドラッグしてまんなかにもってきて、リストモニターの左下の[+ボタン]をおすとリストにデータを追加することができるんだ!
の3つを追加しよう。
この時、アイテムボックスに追加するデータと同じ文字で正解のリストを作るようにしてね!
答えが出たままになってしまうとゲームにならないので、リストが作れたら、データの中の「くだもの答え」のリストの横にあるチェックマークを消しておこう。 チェックを外すと、リストモニターが 表示されなくなるよ。
これで、くだもの探しゲームの正解のリストは完成だよ!
アイテムボックスのリストに3つデータが入るようにしてみよう
今回作るゲームは、くだものを3つ探すゲームだったよね。 まずは、ゲームがスタートしたらPicoがくだものを探すように問題を出すようにしてみよう。 これは、見た目の中の[~と言う]というブロックを使えばできるよね!
「くだものを3つえらんでね!」と言うように設定しよう。
そして、問題を出したら、アイテムボックスのリストに3つデータが入るまでまつようにしていくよ。 制御の中の[~まで待つ]、 演算の中の[~=~]、 データの中の[~の長さ]の ブロックを組み合せるよ! [~の長さ]のブロックは、アイテムボックスのリストに入っているアイテムの数を表しているよ。
今回、アイテムボックスの長さが3、つまり3つアイテムが入るまで待ちたいので、ブロックは [アイテムボックスの長さ=3まで待つ] というように作るよ。
そして、3つアイテムが入ったら、 「3つそろったよ!」と言うようにしておこう。
さあ、これでゲームをスタートしてみよう! 問題が出題されて、アイテムを3つクリックするとPicoがしゃべるようになったね!
アイテムボックスと答えのリストを見比べて答え合わせをしよう
前のチャプターで、 Picoがもんだいを出して、アイテムボックスに3つのアイテムを 入れることができるようにしたよね。 このチャプターでは、問題にあったアイテムがえらばれているかどうかの答え合わせをしていくよ。
リストに入っているものを調べるときには[~回繰り返す]のブロックを使っていくよ。 正解を確認するには、アイテムボックスの「リスト」に入っているデータを1つずつ確認して、答えと合っているかどうかを確かめるという方法で答え合わせをしていくよ。 リストの中身を、1つ目→2つ目→3つ目と順番にしらべていくので、どんどん変わっていく数に対応するために変数を使っていくよ。
まずは、データの中で「番号」という変数を作ろう。
変数ができたら、順番にリストの中の内容が確認できているかどうかをチェックしてみよう! Picoのスクリプトエリアに、こんなスクリプトを作ってね。
番号を1ずつ変えて、「くだもの答え」のリスト長さ(数)の分だけ「くだもの答え」のリストの中のデータを言う。というスクリプトになるよ。 実行してみると、 Picoが「くだもの答え」のリストを読み上げるようになったよね。
変数を使うことで、何回目の繰り返しかなのかを「番号」の変数に覚えさせているんだよ。 「番号」が2なら、番号 番目(くだもの答え)は「くだもの答え」のリストの2番目、つまり「りんご」になるよ。
このスクリプトを使って、アイテムボックスのリストを1つずつ確認して、正解のアイテムが含ま(ふくま)れていなかったら「はずれ!」と言うようにしていこう。 含まれなかったら、というのは演算の [~ではない]のブロックを組み合せることで作っていくよ。
[アイテムボックス に 番号 番目(くだもの答え)が含まれる] [ではない] ならのブロックは、もし「くだもの答え」のリストの中にあるものがアイテムボックスの中になければという意味になるよ。 これは、不正解の場合なので、「はずれ!」と言うようにして、その先に進むひつようがないのでこのスクリプトを止めるで実行を止めるようにしよう。 そして、アイテムボックスに入っているデータすべてがチェックできて、くだものが正しく選ばれているときは、さいごに「正解!」と言ってゲームが終了するようにしていこう。
これでゲームをスタートしてちゃんとうごくかためしてみよう!
何度もゲームができるようにしよう
今の状態では、もしアイテムを探して不正解だった時には、やり直すことができないよね。 不正解の時には、もういちどゲームをやり直せるようにしておこう。 メッセージのブロックを使うことで簡単に設定することができるよ。
考え方としては、
この2つの場合に、くだもの探しがはじまるようにすればいいよね。 なので、メッセージで「くだもの探し」を作って、前のチャプターまでで作った スクリプトがくだもの探しのメッセージをうけとった時に実行されるようにしていこう。 これで不正解でも、なんども挑戦することができるようになるよね。
これで、くだもの探しゲームは完成だよ!
これで、ゲームクリアのルールとクリアした時のうごきが完成したね! さいごにスタートした時に、背景がノーマルの背景になるようにスタートの時の背景を指定してあげよう。
これでゲームは完成だよ! グリーンフラッグをおしてゲームをスタートさせてみよう!
2つ目の答えのリストを作って複数の問題で遊べるようにしよう
このチャプターでは、さらにリストを増やしてアイテムの中から食べられないものを選ぶゲームを、くだもの探しゲームの後に連続で挑戦できるようにしていこう。
まずは、くだもの探しゲームと同じように、データの中で、新しく「食べられないもの答え」という答えのリストを作ってみよう。
今回、ステージ上には3つの食べられないものがあるので、3つをリストに追加しよう。
追加したリストのリストモニターは 毎回ステージの左側に表示されるから、ドラッグして他のリストとかさならないようにしておくと見やすいよ。
リストモニターの左下の+ボタンから リストにデータを追加していこう。
の3つだね。
この時、アイテムボックスに追加するデータと同じ文字で正解のリストを作るようにしてね! 答えが出たままにならないように、リストが作れたら、「くだもの答え」のリストと同じく、リストの横にあるチェックマークを外しておこう。 チェックを外すと、リストモニターが表示されなくなるよ。
これで、食べられないもの探しゲームの正解のリストは完成だよ!
連続して問題が出されるようしよう
同じように、Picoが問題を出して正解・不正解の答え合わせができるようにしていこう。 今回は、前に作ったスクリプトを複製していくよ。
複製するには、複製したいスクリプトのブロックを右クリック(Shift+クリック)して、複製をクリックしよう。
ブロックを複製すると、複製したブロックの下にくっついているブロックは一緒に複製されるようになっているんだよ。 なので、かたまりをまるごと複製したい時には、必ず複製したい場所のはじまりのブロックで複製するようにしよう。
複製したブロックのなかで、「くだもの答え」のリストが選択されている部分を、それぞれ「食べられないもの答え」のリストに変更しよう。
これで、リスト同士の付け合せがゲームに合わせてできるようになるよね。
複製はすごく便利だけど、複製した時に必要な変更をわすれてしまうとスクリプトが上手く実行されないので、必ず変更点をわすれないようにしてね! そして、「くだもの探し」の後に続けて「食べられないもの探し」をはじめたいので、メッセージの機能を使って連続で問題が出されるようにしよう。
くだもの探しのスクリプトの最後に、[食べられないもの探しを送る]と新しいメッセージを作って追加しよう。
そして、後半のスクリプトのさいしょを、 [食べられないもの探しを受け取ったら]に変更すれば連続で問題が出題されるようになるね!
途中のまちがってしまった時のやり直し部分のメッセージも変えれば完璧だ!
これでアイテム探しゲームはすべて完成だよ!
さいごにここまで学んだことをおさらいしてみよう。 このレッスンではまた新しいスクリプトを勉強したね。 データの中のリストをいっぱい使ったよね! リストの機能を使うことで、2つ以上のデータ(文字や数字)をまとめて管理することができるんだったね。 前のレッスンで使った、「変数」は、変化する1つの情報をおぼえておく、 今回のレッスンで覚えた「リスト」は複数の情報をまとめるのに便利だったよね。
今回は、アイテムボックスとして、えらんだアイテムのまとまりや、答えのまとまりなどで リストを使ったね。 このように、同じ種類のデータをまとめたい時に「リスト」を活用していこう。 また、リストの中のデータは、アイテムボックスのようにステージ上のうごきに合わせて 入れるデータを変えることもできるし、答えのように元からきまったデータを入れておく こともできるよ。 リストの使い方によって、データの入れ方も変わるので2つのやり方それぞれおぼえて おくようにしよう。 時間がある人は、新しい問題を作ったり、アイテムを追加してみてオリジナルのゲームにしていこう!