神経衰弱ゲームをメンテナンスしよう【親子で楽しもう!Scratchプログラミング】

不具合を直そう

プログラムがうまく動かないとき、ミスや間違い等の欠陥をバグ、それを直すことをデバッグといいます。バグとは「虫」のことなんですが、昔、創成期のコンピューターで、蛾が回路に挟まって動作不良を起こしたことがあって、それを取り除いたら動くようになったことから、不具合を直すことを「デバッグ」と呼ぶようになったそうです。

前回、6つの絵を2つずつ、12枚のカードを並べようとして、おかしなところが3つありました。

  • カニの位置が上に行きすぎ
  • カエルとクモが1つずつしか出ていない(裏にするつもりの1番の絵が出ている)
  • カードが1枚多い(元のスプライトが最後に移動したところに残っている)

絵の位置を調整しよう

まずは、カニの位置。カニの絵を選んでない人も、位置がおかしい絵があったら、調整しましょう。

「コスチューム」をクリックして、2番のコスチューム(位置の修正が必要な絵)をクリックします。

このままドラッグして下にずらそうとすると、はさみとか足がバラバラに動いてしまうので、一度、絵の全体が入るように左上から右下に向かってドラッグして、すべてを選択します。

ステージでカニの位置を見ながら、位置を調整します。

1番のコスチュームを除く

次は、1番のコスチュームを出ないようにしましょう。これには「もし…なら」を使います。コスチュームの番号が1番かどうかを調べて、1番なら次のコスチュームにしましょう。

「コード」をクリックして、「演算」から「… = 50」を選びます。

その右側に、「見た目」から「コスチューム番号」をはめ込み、数字を「1」にします。

「制御」の「もし…なら」を「次のコスチュームにする」の下にはめ込みます。「大きさを60%にする」と「表示する」が「もし…なら」の中に入ってしまわないように気をつけてください。難しようなら、「大きさを60%にする」をいったん外して、「もし…なら」をはめ込んでから、戻すとうまくいくと思います。(「表示する」は、「大きさを60%にする」にくっついてきます。)

「もし…なら」の空欄に、先ほどつくった「コスチュームの番号 = 1」を、はめ込みます。

「もし コスチュームの番号 = 1 なら」の中には、「見た目」の「次のコスチュームにする」をはめ込みます。

元のスプライトを非表示にする

3つめは、1つ多いという不具合。これは簡単です。最後に残っている元のスプライトを見えなくしてしまえばいいのです。「見た目」の「隠す」を一番後に、加えましょう。

確認してみよう

レイアウトを元に戻して、実行してみましょう。きれいに12枚並びました。

ただこれでは、番号順に並んでいるので、裏にしてもすぐにバレてしまいます。この問題を解決するには、かなり改造が必要です。

いったん変数にコスチュームの番号を番号順に入れておき、それをシャッフル(ランダムな並べ替え)してから、並べ替え後の順番で並べるようにしましょう。

リストを使う

「変数」というのを覚えてますか?「猫にタッチ!」をつくったときに、点数や回数を数えるために使いました。値を入れておくことのできる入れ物のことですね。複数の値を使うときは、別々の名前で変数をそれぞれ用意します。たとえばカードが12枚ある場合、それぞれのカードのコスチュームの番号を入れておく変数を用意すると、「カード1の絵」「カード2の絵」……「カード12の絵」といった感じです。

これは、ちょっと面倒くさいですね。こんなとき便利な機能が、リストです。複数の値を同じ名前で入れておけます。「カードの絵」というリストを用意しておけば、たとえばカード2の絵を使いたいというときには、「カードの絵」リストの2番目と指定して、その値を取り出せます。複数の値を同じ目的で使いたいときやまとめて使いたいときに、とても便利な機能です。

「変数」の「リストを作る」をクリックします。

「新しいリスト名:」に、「カードの絵」と入力し、「OK」します。

「カードの絵」と、それを使うためのブロックが用意されます。

リストにコスチュームの番号を入れる

その中から、「なにか をカードの絵に追加する」をスクリプトエリアにドラッグします。

「なにか」のところには、「見た目」の「コスチュームの番号」をはめ込みます。

さきほどの「4回繰り返す」の中の一番上のブロックである「次のコスチュームにする」をドラッグして外します。「大きさを60%にする」から下のブロックを外してから、「もし コスチュームの番号 = 1 なら」と一緒に、「コスチュームの番号 をカードの絵に追加する」の上にはめ込みます。「大きさを60%にする」から下のブロックは元に戻します。

「制御」の「10回 繰り返す」をはめ込んで、数字を「12」にします。

これを、「(緑の旗のマーク)が押されたとき」のすぐ下にはめ込みます。

これで、12枚のカードすべてにコスチューム番号が入るのですが、このままだと(緑の旗のマーク)がクリックされるたびに、12個ずつリストに値が追加されてしまいます。

なので、最初にリストをクリアしておきましょう。「変数」の「カードの絵のすべてを削除する」を「(緑の旗のマーク)が押されたとき」の下にはめ込みます。

リストに入ってる番号の絵を表示する

リストに入っているコスチューム番号を取り出して、その番号の絵を表示しながらクローンをつくるようにしましょう。

「見た目」の「コスチュームを コスチューム1 にする」を「大きさ60%にする」の前に、はめ込みます。

何番目のカードかを指定する変数を用意しましょう。「変数」の「変数を作る」をクリックします。

「カード番号」という変数名にします。

新しく出来たブロック、「カード番号を0にする」と「カード番号を1ずつ変える」を、それぞれ、「3回繰り返す」の前と、「コスチュームを コスチューム1 にする」の前に、はめ込みます。

「コスチュームを コスチューム1 にする」の「コスチューム1」のところに、「カードの絵の1番目」をはめ込みます。

数字のところに、「カード番号」をはめ込みます。

さっき、元のスプライトを非表示にしたままなので、繰り返しクローンをつくる前に、表示するようにしておきましょう。

「見た目」の「表示する」を「3回繰り返す」に、はめ込みます。

もう一度、確認してみよう

(緑の旗のマーク)をクリックして、実行すると、こんな感じです。

絵はさっきと変わっていませんが、「カードの絵」リストにコスチューム番号が順番で入っているのがわかりますね。ただ、リストの値の表示が邪魔で絵が見えません。これは、変数名やリスト名の横のチェックを外すと消えます。

ちなみに、カードは、こんな風に並んでいます。

黒い大きな字は「カード番号」、赤い小さな字は、カードの絵のリストに入っている「コスチューム番号」です。2つの番号を混乱しないようにしましょう。(コスチューム番号の始まりが、2番からでなくても、問題ありません。)

まだ、順番に並べただけですが、次回は、シャッフルに挑戦です。

これまでの記事

Scratchが3.0にバージョンアップ!&神経衰弱をつくってみよう【親子で楽しもう!Scratchプログラミング】 - バレッド(VALED PRESS)

簡単なゲームをつくってみよう[2]【親子で楽しもう!Scratchプログラミング】 - バレッド(VALED PRESS)

簡単なゲームをつくってみよう【親子で楽しもう!Scratchプログラミング】 - バレッド(VALED PRESS)

Scratchでなにかつくってみよう:親子で楽しもう!Scratchプログラミング - バレッド(VALED PRESS)

Scratchってなんだろう?:親子で楽しもう!Scratchプログラミング - バレッド(VALED PRESS)

© Valed.press