Рейтинг - 3.0 (4)

Мы продолжаем изучать условия, и на этот раз мы рассмотрим конструкцию "if-then-else-end".

Довольно хорошая конструкция, так как мы указываем что будет выполнятся, когда условие не срабатывает, а так же указываем действия, при которых условия срабатывают.

Рассмотрим конкретный пример, что бы разобраться в этой конструкции.

:METKA_1
wait 0
if
$RITA == 0
then
$KATYA = 1
else
$KATYA = 0
end
jump @METKA_1

Судя но логике, если переменная "$RITA" равна нулю, то переменная "$KATYA" будет равна 1. Если переменная $RITA НЕ будет равна нулю, то переменная "$KATYA" будет равна 0. Слово else переводится как "иначе". Конструкция довольно проста, её очень часто используют в скриптинге. Расмотрим более сложный пример и изучим его детально. Изучать его будем на примере с реальной жизни, так как показала статистика, наши уроки более понятны, когда мы наводим примеры именно из жизни.

Опять представим школу, представим какой то урок, например математики ( я не люблю математику от рождения :) ). Допустим кого-то с учеников вызвали к доске, например, Иванова, и предлагают ему решить задачу. В нас есть 2 варианта: либо он решит её и получит пятёрку, либо он нифига ( как и я :) ) не шарит её и получит двойку. Давайте сопоставим данные и напишем скрипт.

Первым делом нужно определится с переменными, которые будут использоваться в нашем скрипте. В первую очередь нужно назначить переменную, которая будет хранить оценку. Допустим это будет переменная "$OTSENKA", которая вначале будет равна нулю. Дальше мы нам нужно написать условие на то: решит ли он задачу. Соответственно, нам нужно написать переменную, которая будет проверятся. Допустим, это будет переменная "$ZNAYET". Соответственно, если он знает, то проверять мы будет: не равна ли эта переменная 1 - так мы будем знать решил ли он задачу или нет. Если переменная не равна 1, то значит переменная будет равна нулю, то есть он не знает ничего, чисто ноль :)

Думаю хватит теории и напишем скрипт:

create_thread @ZNANIE
end_thread

:ZNANIE
thread 'ZNANIE' 
wait 0
$OTSENKA = 0 // зададим значение изначальной оценки
$ZNAYET = 0 // переменная, которую мы будем проверять, то есть решил он задачу или нет
 
:ZNANIE_1
wait 0 
if
$ZNAYET == 1 // проверяем: знает ли он задачу ?
then
$OTSENKA = 5 // если да, то оценка 5
else
$OTSENKA = 2 // если нет, то оценка 2
end
end_thread // конец потока

Рассмотрим пример, но используя в реальной жизни:

:ZNANIE
thread 'ZNANIE'
wait 0
оценка 0, то есть нустота, в Иванова нет оценки
первоначальный этам знания мы написали, что равен нулю

:ZNANIE_1
wait 0
if
решил ли он задачу
then если да, то
оценка 5
else если нет, то
оценка 2
end
end_thread // конец потока

Разобраться с этой конструкцией не так то тяжело, так мы сможем лучше контролировать(проверять) процессы в нашем скрипте. Дальше мы будем рассматривать примеры с опкодами и там мы ещё детальнее рассмотрим эту конструкцию.

В Sanny Builder возможны и вложенные условия, то есть проверять новые условия, при выполнении предыдущих. Это довольно тяжело объяснить простым языком, но я всё же попытаюсь. Давайте напишем скрипт с использованием простого примера:

:ZNANIE
thread 'ZNANIE' 
wait 0
$IVAN = 0
$IGOR = 0

:ZNANIE_1
wait 0
if
$IVAN == 0
then
 if
 $IGOR == 1
 then
 jump @ZNANIE_2
 else
 jump @ZNANIE_3
 end
else
 if
 $IGOR == 1
 then
 jump @ZNANIE_2
 else
 jump @ZNANIE_3
 end
end
jump @ZNANIE_1
 
:ZNANIE_2
wait 0
end_thread 

:ZNANIE_3
wait 0
end_thread

Рассмотрим графический вариант этого скрипта:

Довольно сложно на первый взгляд, но, поверьте это ещё лёгкий пример, по сравнению с тем, что пишут опытные скриптеры. Обратим внимание на то, что есть 2 места финиша шарика! Это значит, что условиями мы можем манипулировать шариком. Это значит, что в зависимости от условий, шарик может завершать работу в том или ином месте. В нашем случаи таких мест два.

Сразу можно заметить, что в скрипте присутствуют три конструкции "if-then-else-end". Первой идёт проверка равности переменной "$IVAN". Если проверка срабатывает ( то есть переменная равна 0 ), то идёт новая проверка на равенство переменной "$IGOR". Если условие срабатывает, то идёт прыжок на метку "@ZNANIE_2", если не срабатывает, то идёт прыжок на метку "@ZNANIE_3". Если переменная "$IVAN" не равна 0, то идёт 3-я конструкция "if-then-else-end", которая такая же, как и вторая, проверяет на равенство переменную "$IGOR".

Ну что же, думаю необходимый минимум я вам предоставил, дальше мы ещё не раз будем рассматривать эти конструкции и постараюсь вам ещё подробнее рассказать о условиях.


OnYnEвWuЙ_4eЛ   (15.05.12 16:25)
0_о! Вау

BalashovM   (27.12.15 19:57)
Я так понял, здесь обработчик в любом случае не сможет вернуться на метку 1 - только на метку 2 или метку 3, верно?

0
wmysterio   (28.12.15 06:21)
Здесь скрипт завершится на метке 3, так как переменная $IVAN равна 0 а переменная $IGOR не равна 1.
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Какая GTA Вам понравилась больше всего?
Всего ответов: 6
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
Реклама