RU

Пример создания циклов с помощью DYNAMIC.

Axil #1339 04.02.2015 18:52 17 comments 12071 views

Хочу поделиться секретом, как делать удобные циклы.
В какой-нибудь локации которая инициализируется в начале прописываем нужные варианты циклов как динамический код:
Например, простой цикл по 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 наружу, тоесть не прервать цикл раньше времени.

Edited at 04.02.2015 18:53 (11 years ago)

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

Log in or Register to post comments.