WarCraft 3: Циклы (практика)

Начинающий
Статус
Оффлайн
Регистрация
30 Янв 2014
Сообщения
57
Реакции[?]
6
Поинты[?]
0
[HR][/HR]
[HR][/HR]
Циклы (практика)

[HR][/HR]

Цикл - повторение одного и того же действия.

[HR][/HR]
Циклы

[HR][/HR]
Итак, цикл - повторение действий. Давайте посмотрим пример:

PHP:
For each (Integer A) from 1 to 10, do (Actions)
    Loop - Actions
        Set i = (i + 1)
Смотрим на первую строчку: For each (Integer A) from 1 to 10, do....
Это - "заголовок" цикла, в котором назначается сколько раз будет выполнено действие. Integer A значит, что как "счетчик" цикла будет использована переменная A (в данном случае она автоматически создается и убирается после выполнения цикла). При выполнения действия в счетчике будет находится номер итерации (т. е. выполнения) цикла. Так, при первом выполнении там будет один, при втором - два, третьем - три и так далее. Вторую строчку можно пропустить, она будет в любом цикле. Смотрим третью:Set i = (i + 1). Это - действие, которое и будет выполнено множество раз. Оно не ограничивается одной строчкой - можно поставить сколько угодно действий.

Теперь можно сказать что же этот цикл делает: присваивает переменной i значение i + 1 десять раз. После выполнения цикла в переменной i будет значение 10 (в том случае, если начальное значение было 0). Грубо говоря, цикл выполняет операцию i + 10.
Примечание: важно понимать, что A - тоже переменная, и читать / записывать значение из неё / в неё можно откуда угодно. Так, можно получить её значение даже вне цикла, хотя это не имеет смысла. Но такая "возможность" может вызвать один серьезный глюк: если запустить два цикла, и оба работающие с переменной A, они обе будут пытаться изменять значение A. Скорее всего, это закончится тем, что циклы (оба) будут выполнены неправильно: действие будет выполнено несколько лишних раз либо наоборот - будет выполнено меньше раз, чем требуется. Поэтому, в триггерах есть возможность использовать другие переменные, не только A (также существует переменная B, но если нам надо сразу 3 цикла запустить?). Когда Вы создаете действие цикла (имеется в виду действия создания цикла, а не действия в цикле) у Вас есть выбор: "For Each A...", "For Each B...", "For Each Variable...".
Второе - тоже самое, что первое (какая разница: A или B? хотя если у вас больше чем два цикла одновременно не будет - рекомендую, потому что тогда не нужно создавать еще одну переменную). А вот используя третье Вы можете назначить, какую именно переменную надо использовать как счетчик (тип переменной - обязательно integer).

В том же меню Вы найдете еще два типа действий цикла: "... Do Multiple Actions" и, соответственно, без такой надписи ("просто" цикл). Как видно из названий, один цикл дает возможность сделать несколько действий в триггере, а другой - нет. Никакой разницы нет, что использовать первый, что второй.
Давайте рассмотрим еще один пример. Помните, нам надо было в переменную i занести значение 1 + 2 + 3 + 4 + 5 ... + 10?

PHP:
For each (Integer A) from 1 to 10, do (Actions)
    Loop - Actions
        Set i = (i + (Integer A))
В итоге в переменную i будет внесено как раз нужное значение. Судите сами - переменной i каждый раз прибавляется значение, которое само по себе меняется (номер итерации цикла). Таким образом, сначала будет Set i = (i + 1), затем Set i = (i + 2) и так далее.



Статья скопирована с сайта:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Последнее редактирование:
Сверху Снизу