
スクラッチでコードを作成する時に「ずっと」というブロックを使うことは、よくあると思います。
実際に「ずっと」と「もし」を組み合わせることで、やりたいことの多くは実装できてしまうと思います。
しかし、なんでもかんでも「ずっと」を使えばいいというわけではありません。
この記事では「まで待つ」と「まで繰り返す」の使い方や、使いどころを解説しますので、理解して正しい使い分けが出来るようになってみてください。
説明のためのプロジェクト

ネコが右上からスタートしてケーキにたどり着いたらゴールという迷路です。
ただし、以下のような条件や設定を盛り込んでいます。
- 壁などの黒い部分に触れるとスタートに戻る
- りんごを取ると小さくなる(鍵を取れるようになる)
- 鍵が無いとドアが開かない(鍵は使うまでネコについていく)
「ずっと」の使いどころ

ネコを動かすようなコードは「ずっと」で作るのが一般的だと思います。
「ずっと」を使う場合、そのコードの役割が終了するところで、止めてあげる設定が出来れば、なおいいです。
(理由は後ほど解説します)

「まで待つ」の使いどころ

りんごのコードが分かりやすいと思います。
「プレイヤーに触れた」という条件が成立するまで待つ。という意味になります。
その他にも使いどころはあります。
- 「~キーが押された」まで待つ
- 「~色に触れた」まで待つ
- 「~色が~色に触れた」まで待つ
- 「マウスが押された」まで待つ
- 「変数が0になる」まで待つ

キッカケ(条件)が決まっているのであれば「まで待つ」を積極的に使ってみましょう。
「まで繰り返す」の使いどころ

鍵のコードです。
プレイヤーに触れたあと、ドアに触れるまで、プレイヤーにくっついていく。というプログラムです。

同じようなプログラムを「ずっと」と「もし」を使って作成するとこのようになりますが、2つのコードは、鍵を取った後の挙動に違いがでます。
- 「まで繰り返す」:ドアに触れるまでプレイヤーにくっつく
- 「ずっと」と「もし」:スタートに戻されると鍵はその場に置き去り

繰り返しを止めるキッカケが決まっているなら、「まで繰り返す」を使いましょう。
なんとなく「ずっと」を使うのはやめよう

スクラッチでプログラミング学習を始めると、「繰り返したい」ときは「ずっと」を使うと覚え、そればかりをなんとなく使いがちになります。
理由は「~回繰り返す」や「まで繰り返す」と比べて、しっかり考えなくても使えてしまうからだと思います。
初めのうちは、「ずっと」を使っていても大きな問題は生まれないかもしれませんが、作品が大きく複雑になっていくほど、「ずっと」の呪い?がジワジワ効き始めてきます(;・∀・)
- 止まって欲しいところで動き続ける
- 消えていたはずなのに出てくる
- 変数が増え続けて止まらない
・・・などなど。
このようなバグが発生した際に、なんとなく「ずっと」を使ってしまっている人は、直す場所が分からず、プログラミングが一気に嫌になってしまうと思います。
「ずっと」というのは、「(止めなければ)一生動き続ける」コードです。
プログラムにおいて「無限ループ状態」は絶対に避けて作成しなければいけません。
まとめ
「まで待つ」と「まで繰り返す」について、使い方の解説をしました。
読んだだけでは、いまいちピンとこないところもあるかもしれません。
なので、どんどん使って慣れていきましょう。
「ずっと」だけを使っていた時よりも、考える事が増えて疲れるかもしれませんが、その分、バグやトラブルが絶対に少なくなります。
プログラムが考えた通り、思い通りに動く楽しさを、ぜひ味わってみてください(*^-^*)


コメント