Уроки моддинга
Основной раздел
Search
K
Links

00049. Циклы ( Часть 3 - repeat ). Вложенные циклы

Циклы ( Часть 3 - repeat ). Вложенные циклы|Мы опять изучаем циклы, и на очереди в нас - repeat.|wmysterio|wmysterio||||С вами wmysterio, и циклы далеко от меня и вас не делись :) Сегодня поговорим об третьем типе циклов - repeat. Этот цикл очень похож на "while", но отличие в том, что "repeat" сначала выполняет действия, а потом проверяет условия. При этом, в отличии от"while", выход с цикла будет если условие истинно! Вот для примера небольшой скрипт:
repeat
wait 0
// ...опкоды...
until 0@ == 0
Сначала будут выполняться опкоды в блоке "repeat-until". После этого идёт проверка условия "0@ == 0". Если это условие выполняется, то мы выходим с цикла. Если нет, то начинаем цикл заново. Давайте напишем самый простой скрипт с использованием этого цикла:
:UNTIL
thread 'UNTIL'
wait 0
repeat
wait 0
player.Money($PLAYER_CHAR) += 100
until actor.Dead($PLAYER_ACTOR)
end_thread
Смысл скрипта в том, что пока СЖ будет жив, он будет постоянно получать +100 денег. Давайте рассмотрим графический вариант этого скрипта:
И так, уже по-традиции, цвета линий:
  • Желтый - обычное движение шарика;
  • Фиолетовый - условие;
  • Красный - движение шарика, если условие НЕ выполняется;
  • Зелёный - движение шарика, если условие выполняется;
Лично я практически не использую этот цикл, но уверен, что он существенно упрощает коддинг и делает скрипт более читабельным.
Естественно в таком цикле можно использовать операторы "break" и "continue". Ваша задача - сделать скрипт с использованием этих операторов. :)
Итак, циклы мы рассмотрели. Осталось только одна важная тема - вложенные циклы. Что значит "вложенные"? Это циклы, которые находятся внутри других циклов. Вот небольшой пример использования вложенных циклов:
:UNTIL
thread 'UNTIL'
wait 0
for $Attempt = 1 to 5 step 1
repeat
wait 0
player.Money($PLAYER_CHAR) += 100
until actor.Dead($PLAYER_ACTOR)
end
end_thread
Как видите, цикл "repeat" вложен в цикл "for". Как и предыдущем примере, СЖ-ю будет постоянно прибавляться денюжка. Если СЖ умрёт, то денюжка будет и дальше прибавляться, но пока он не умрёт больше 5 раз ( исходя из цикла "for" ). Новичкам довольно сложно понять принцип работы скрипта, так как им тяжело представлять сами движения, но сделав пару скриптов, большинство начинает понимать как работает такая система. Чем больше попыток, тем лучше будет осваиваться материал.
Ваша задача - сделать три вложенных цикла ( в любом порядке ), а свои примеры пишите на форум. Я специально даю задания, что бы вы учились работать с циклами, так как это переход на новый уровень скриптинга.|1180|1|0|15530028png403210400`208``||cikly_chast_3_repeat_vlozhennye_cikly|1499000993