コードを繰り返し実行するには、様々な方法があります。指定した回数だけ実行する場合は、for ループを使用します。ここでは、for ループの記述方法やコードの動きを学びます。カウントダウンのコーディングなど、いくつかの実用的な例を紹介します。
for ループのしくみ
for ループは、実行回数を制御するために、「制御変数」「終了値」「増減値」の 3 つの値を使用します。for ループは、制御変数の値から始まり、終了値を渡すまで、ループ内でコードを実行するたびにカウントアップまたはカウントダウンします。増減値がプラスの場合はカウントアップし、マイナスの場合はカウントダウンします。
for ループのステップ
for ループを理解するには、進行状況のロジックを示すフローチャートを見ると分かるでしょう。
まず、for ループは制御変数を終了値と比較します。
コードを実行すると、増減値が制御変数に加算されます。その後、ループは制御変数をチェックして最初からやり直します。
制御変数が終了値を超えると、ループは停止します。たとえば、ループの終了値が 10 の場合、制御変数が 10 を超えると、for ループは終了します。
カウントダウンをコーディングする
for ループの動作確認をしてみます。10 から始まり、1つずつ減らして、0 までカウントダウンする for ループをコーディングします。ループが実行されるたびに、制御変数内の現在の値が表示されます。
- ServerScriptService で、 PracticeLoop という名前の新しいスクリプトを作成します。スクリプトで、キーワード 「for」 を入力するところから始めます。
for
- countという名前の制御変数を作成し、開始値を 10 に設定します。変数ですが local は付けません。なお、制御変数は for 内でのみ参照できるものとなります。
for count = 10
- 「, 0」と入力して、終了値を 0 に設定します。値を区切るために必ずカンマを入力してください。
for count = 10, 0
- さらに「, -1」と入力します。これが増減値となります。ループがそのアクションを終了した後、増減値を制御変数 count に加算します。-1 を加算するということは、「1つ減る」ということを意味します。
for count = 10, 0, -1
- for ループを終了するには、 do と入力して Enter を押し、 end を追加します。do と end の間に入力されたコードは、ループが繰り返されるたびに実行されます。
for count = 10, 0, -1 do
end
- ループ内で、制御変数 count の値を表示してカウントダウンを作成し、wait 関数で1秒待ちます。
for count = 10, 0, -1 do
-- forループが進行している現在の番号を表示します
print(count)
-- 1秒待ちます
task.wait(1)
end
- プロジェクトを実行し、出力ウィンドウを見て for ループを確認します。
トラブルシューティング
この時点で、ループが意図した通りに機能しない場合は、次のいずれかを試してください。
- for ループ内の数値を区切る2カンマは2つありますか? カンマが多かったり少なかったりするとループが開始されなくなります。
- for ループが一気に10から0までの数値を表示する場合は、wait 関数のパラメータが小さすぎるということです。
さまざまな for ループの例
制御変数、終了値、増減値を変更すると、ループの機能が変わります。
下記の例は、開始値、終了値、増減値が異なる for ループです。それらをスクリプトに入れてみて、何が起こるか見てみましょう。
1ずつカウントアップ
for count = 0, 5, 1 do
print(count)
task.wait(1)
end
偶数のカウントアップ
for count = 0, 10, 2 do
print(count)
task.wait(1)
end
for ループがまったく実行されない場合
以下の例のように、制御変数が終了値を超えてスタートする場合、for ループはまったく実行されません。この場合、for ループはカウントアップし、count が 0 より大きいかどうかをチェックします。for ループが最初のチェックを行うと、10 が 0 より大きいことがわかるため、ループ内は実行されず何も表示されません。
for count = 10, 0, 1 do
print(count)
task.wait(1)
end