中で変数Mが変化して0でなくなると、ループを抜けます。これも2つの条件でループを抜けられる事例。応援クリックをお願いします。紹介していないコマンドやプログラム構成(ロジック)を使いながら、新しいプログラムを作ってゆきます。動きのあるプログラムをテーマにしようと思います。そこで、以下の概略仕様で、「反射ゲーム」を作ることにします。「回転している羽根」にします。アニメーションを作る前に、アニメーションの準備をします。現し、(8桁、2行)の位置に表示させます。所定時間だけ「静止している羽根」を表示させるプログラムを作ります。これは、アニメーションの基本構造になります。その中で、所定時間だけ表示させるためには、ループの中に表示処理を入れて、ループを所定回数まわすようにしています。表示時間を決める部分を赤文字で示しています。赤文字部分だけを抜き出します。用いたループで構成されていて、ループを50回まわしています。間で、ループが回ります。カウンタ変数Cは、最初50で、ループを1回まわるたびに、カウンタCが1づつ減ります。ディクリメント・ジャンプ命令と言います。Cを1つ減らします(デクリメントします)。デクリメントした結果Cが0(ゼロ)になった場合は次の処理を飛ばして、その次の処理までジャンプします。ここで思い出してもらいたいのは、「プログラムは特に指示がなければ上から下へ処理が進む」と言うことです。組み合わたカウントループを作ることが出来ます。命令と同様に、変数が0になると2つ目の処理へジャンプする機能を持っていて、インクリメント・ジャンプ命令といいます。変数に負の数を指定すれば、いずれ変数が0になり、そこでインクリメント・ジャンプします。変数に正の数を指定したので、0になることはなく単にインクリメント(1づつ増える)だけでした。incrementは「増やす」と言う意味の英語。increaseの方が馴染みがあるかも知れません(これも「増やす」の意味)。「減らす」と言う意味です。組み合わせて、同じ処理を記述することができます。同じ処理を行う場合は、Dsz命令やIsz命令の処理速度の方が速いことが分かっています。すると処理が速くなるだけでなく、変数Cが0かどうかの判定とジャンプ処理まで含んでいるので、記述もシンプルになります。Basic特有のこれらの命令を、私は積極的に使っています。ループの中で羽根を表示し、ループが50回まわった後羽根の表示を消しています。Cの初期値を変えると、ループ回数が変わります。そこで、Cをランダムに変更すれば、羽根の表示時間をがランダムに変化します。羽根がまわるアニメーションを作ってゆきます。2-1回る羽根をつくるアニメーションは、映画もテレビもパラパラ漫画も、理屈は同じです。連続して表示される静止画を見ると、我々には動いているように見えるわけです。そこで静止画を見せる間隔は、長すぎても短すぎてもダメで、ちょうど良い間隔があります。交互に見せて実現しています。8,2,"+"を適切な間隔で交互に表示させれば回っているように見えるはずです。"を実際に走らせてみてください。なんだか、薄ぼけたXと+が同時表示されているように見えます。2つの静止画の間隔が短すぎるのでしょう。コマンドの表示間隔を、もう少し長くしようと思います。間隔が長すぎてもダメなはずなので、間隔を調節できるようにしたいものです。仮に、以下のようにしてみても、状況は改善しません(実際に試してみるとわかります)。表示の間隔がほとんど無いことが、うまくゆかない最大の理由でしょう。表示する作戦に切り替えます。表示の切り替えは、ループを通る回数から判定すれば良さそうです。表示する方法を試してみます。判定処理にかかる時間だけ間隔が長くなることを利用します。Cの奇遇判定には、「奇数は2で割り切れず、偶数は2で割り切れる」ことを利用します。小数部を取り出して、それがセロなら割り切れる、ゼロでないなら割り切れないと判定できそうですね。