Пример создания циклов с помощью DYNAMIC.
Хочу поделиться секретом, как делать удобные циклы.
В какой-нибудь локации которая инициализируется в начале прописываем нужные варианты циклов как динамический код:
Например, простой цикл по i и двойной по y и x.
$FOR_i={
i = args[0]
:labelloop_i
if i <= args[1]:
dynamic $args[3]
i+=args[2]
jump 'labelloop_i'
end
}
$FOR_xy={
y = args[0]
:labelloopxy_y
if y <= args[1]:
x = args[3]
:labelloopxy_x
if x <= args[4]:
dynamic $args[6]
x+=args[5]
jump 'labelloopxy_x'
end
y+=args[2]
jump 'labelloopxy_y'
end
}
Для простого цикла аргументы: начальное значение i, конечное значение i(включительно), шаг приращения i, код
Используем простой цикл по i:
dynamic $FOR_i, 0, 9, 1, _
{
*pl i
}
Используем вложенный цикл:
dynamic $FOR_xy, 0, 10, 2, 0, 5, 1, _
{
*pl "(<<x>>,<<y>>)"
}
Либо, если нужны еще какие-то действия в конце внутренего цикла - то используем два простых цикла по X и Y:
dynamic $FOR_y, 0, 9, 1, _
{
dynamic $FOR_x, 0, 9, 1, _
{
*p "(<<x>>,<<y>>)"
}
*pl
}
Все очень просто. Становится похоже на С++.
Но есть недостаток - из не сделать jump наружу, тоесть не прервать цикл раньше времени.
Nex, спасибо.
Белый Шарик:
А я чтот так и не понял пока работу dynamic на этом примере.
Код:dynamic $FOR, ‘i’, 5, 10, 1,
}При исполнении кода должно что-то происходить? У меня висит просто.
Да, должно в экран основного описания вывести вот это:
5 9
5 6
5 3
6 9
6 6
6 3
7 9
7 6
7 3
8 9
8 6
8 3
9 9
9 6
9 3
10 9
10 6
10 3