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

Last updated