ツクールでできる!?プログラミング教育のお話

9.無限ループは作るのカンタン!?
(プログラムは急には止まれるけれど、命令しないと止まってくれない話)
第7回でプログラムが得意なことの1つに、繰り返しに強いということをお話ししました。
人間だったらイライラしたり、疲れたりしそうなことでも、プログラムは無限に繰り返すことができます。

上の画像をクリックすることでゲームへ飛びます。
今回の説明部分は1ページめくった『9.無限ループとその止め方の仕組み』です。
画面の上の方に注目してください。体育の授業でやりそうな「8の字跳び」をものすごいスピードでやっています。
8の字跳びに見えない!というツッコミはお許しください。これ以上見やすいものが思いつきませんでした…。
それはともかく、ここですごいのは「全く疲れることも、つっかえることもなく、ひたすら繰り返している」こと。
その気になれば何周でも、何時間でも続けられます。これがプログラムのすごいところです。

ではこの8の字跳びはいつ終わるのか?お答えします、終わりません。
プログラムでは「繰り返し」としたときに、ちゃんと止まる仕組みを作ってあげないと
自分から止まることはありません。よく言われる「無限ループ」がそれです。
それで困らないものであればそれでもいいのですが、割と困ることが多いのが世の中でもあります。
お風呂の水も出し続けていたらあふれますし、きれいなイルミネーションもずっと続いていたら電気代がスゴイです。

前回もお見せした命令です。「自動実行」が「動作をひたすら繰り返す」ことであることは第7回でお話ししました。
実はこれ、このままにしておくとひたすら変数が足されてしまって問題が起こってしまいます。
今使っている「RPGツクール」ではルールとして「自動実行の命令が行われている時はこちらは操作できない」という
ものがあります。実際前回までのウェーブをしている間は、自分のキャラクターは動かせなかったと思います。
つまり、自動実行で命令を入れたら、何かしらの方法で止まる方法を作っておかないと
全く動けなくなってしまい、そこでそれ以上操作することができなくなるわけです。
プログラムの世界ではこれを「フリーズ」と言うようです。聞いたことがある人もいるのではないでしょうか。

そこで女の子が一番右に来たら(この場合変数が14になったら)変数を増やすのを止める命令を入れます。
上の図では変数が14になった時点でトリガーが自動実行から決定ボタンに変わります。これでフリーズは防げます。
しかも実行内容に何も入っていないので、これで「何もしない」ことになり、動作を止めることができます。
(実際はこの後、今度は1ずつ変数を減らす命令を入れているので、女の子が往復をしていたわけですが)


今回の部分の説明に戻します。下の方では、入力した回数ぶんだけ、女の子がジャンプしてくれます。
入力した回数は、これまでも説明してきた「変数」というところに記憶されます。
そして「自動実行」でひたすらジャンプを繰り返しますが、ジャンプするごとにその変数が1減っていき
0になった時点でジャンプが止まる、という仕組みです。
これによって、女の子がジャンプを繰り返す。入れた回数ジャンプをしたら止まる、
という命令になりました。慣れると意外と簡単ですよ。

ちなみに「入れた回数ジャンプをしたら止まる」命令を入れ忘れると、女の子がずっとジャンプを繰り返し
ジャンプ中はこちらが動けないので全く操作できなくなる=フリーズ、となります。
フリーズを体験してもらうものも入れようと思ったのですが、完全に操作不能になるものを意図的に入れるのは
どうなのかと迷って結局入れませんでした。(入れてほしいという意見が多いようなら追加します)


もどります
inserted by FC2 system