Циклы: while, repeat и for
Писать циклы, которые заканчиваются и не вешают игру.
Теория
Цикл повторяет код, пока верно условие или пока не кончится счётчик. Числовой for повторяет заданное количество раз, while — пока условие истинно, repeat — как while, но проверяет условие после первого прохода.
Главная опасность в Roblox — бесконечный цикл без ожидания. Он не даёт движку заняться остальным, и игра замирает. Поэтому в while true do обязательно есть task.wait().
break прерывает цикл целиком, continue пропускает один проход и переходит к следующему.
- for i = 1, 10 do — от одного до десяти включительно
- for i = 10, 1, -1 do — обратный отсчёт
- task.wait(1) ждёт примерно секунду и возвращает реальное прошедшее время
- Цикл, который трогает весь Workspace каждый кадр, — верный способ уронить FPS
Пример
Обратный отсчёт до старта раунда с паузой в секунду.
for seconds = 5, 1, -1 doprint("Старт через " .. seconds)task.wait(1)endprint("Раунд начался")local attempts = 0while attempts < 3 doattempts += 1print("Попытка " .. attempts)end
Задача
Выведи числа от 1 до 20, но пропусти все нечётные, а на числе 16 останови цикл совсем.
- Чётность проверяется остатком: number % 2 == 0
- Пропустить проход — continue, остановить цикл — break
Показать решение
for number = 1, 20 doif number > 16 thenbreakendif number % 2 ~= 0 thencontinueendprint(number)end
Проверь себя
Почему в while true do нужен task.wait()?
Показать ответ
Без ожидания поток занят целиком, и всё остальное перестаёт работать.
Чем continue отличается от break?
Показать ответ
continue переходит к следующему проходу, break заканчивает цикл целиком.