Циклы
В цикле
FOR
количество повторений (итераций) определено заранее.Синтаксис:
FOR <имя переменной> = <начальное значение> TO/DOWNTO <конечное значение> [шаг = 1]
<тело цикла>
END
имя переменной
- переменная, которая используется для подсчета количества итераций (счетчик)
начальное значение
- значение счетчика перед первой итерацией (любое число, включая имя модели)
TO
или DOWNTO
- указывает на то, увеличивается или уменьшается значение счетчика после каждой итерации
конечное значение
- значение счетчика, при котором цикл завершается (любое число, включая имя модели)
шаг
- необязательный параметр, который определяет на сколько изменяется значение счетчика после каждой итерации. По умолчанию равен 1
тело цикла
- команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствоватьvar
$value: int = 0
$final: int = 100
end
FOR $MyCounter = 1 to $final step 2
$value += $mycounter
end
Если тип счетчика не был объявлен ранее, счетчик прио бретает тип
Integer
. Если начальное значение
, конечное значение
или шаг
цикла указаны в виде переменных, эти переменные будут автоматически объявлены с тем же типом, который есть у переменной цикла.Для использования дробных чисел для счетчика итераций, счетчик должен иметь тип
Float
.var
$MyCounter: float
end
FOR $MyCounter = 1.0 to $final step 2.0
end
// переменные $MyCounter и $final имеют тип Float
Синтаксис:
WHILE <условие цикла>
<тело цикла>
END
условие цикла
- любой условный опкод
тело цикла
- команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствоватьwhile not #AK47.Available
wait 0
end
Цикл
WHILE
работает до тех пор, пока условие цикла истинно. Условие цикла проверяется до первой итерации цикла. Поэтому если условие изначально ложно, цикл не отработает ни разу.$var = 10
while $var > 11
inc($var)
end
// условие цикла ложно, поэтому команда inc($var) никогда не выполнится
while true
<тело цикла>
end
Такой цикл будет выполняться бесконечно, пока в теле не выполнится команда
Break
.while false
<the loop body>
end
Такой цикл игнорируется компилятором, т.к. условие изначально ложно.
В текущей версии допускает ся только один опкод в качестве условия цикла. Если нужно скомбинировать несколько проверок, их можно поместить в начало цикла и использовать команды
Break
и Continue
while true
if and
$var >= 0
$var <= 100
then
Break
end
// цикл выполняется, пока значение переменной $var
// находится в интервале [0...100]
<тело цикла>
end
Синтаксис:
REPEAT
<тело цикла>
UNTIL <условие цикла>
тело цикла
- команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствовать
условие цикла
- любой условный опкодЦикл
REPEAT..UNTIL
работает, пока условие цикла не будет истинно. Условие проверяется в конце итерации цикла, поэтому данный цикл будет иметь минимум одну итерацию.Константы
True
и False
могут быть использованы в качестве условия цикла.repeat
// цикл с одной итерацией
until true
repeat
// цикл работает бесконечно, пока не остановлен командой Break
until false
В текущей версии допускается только один опкод в качестве условия цикла. Если нужно скомбинировать несколько проверок, их можно поместить в конец цикла и использовать команды
Break
и Continue
repeat
<тело цикла>
if and
$var >= 0
$var <= 100
then
Break
end
// цикл выполняется, пока значение переменной $var
// находится в интервале [0...100]
until false
Если необходимо пропустить текущую итерацию цикла и перейти к следующей, используйте команду
Continue
. Команда
Break
завершает цикл и передает управление на команду, следующую за завершающим end
.Обе эти команды могут быть использованы как параметр в опкоде (например,
jf Continue
) или как отдельная команда.while true
if
not $actor.dead
jf Break // завершить цикл
if
$actor.dead
then
Continue // перейти на следующую итерацию
end
end
Last modified 3yr ago