- Вывод текста
- Программирование
- Оформление
- Расширенные возможности
- Нюансы написания игр под разные плееры
-
- x AeroQSP
- Утилиты и средства разработки
Это старая версия документа.
Условия — это такие особые конструкции в QSP, которые позволят сделать вашу игру по настоящему интерактивной. Они позволяют разветвлять события, происходящие в игре в зависимости от уже сложившихся условий, и таким образом вносить разнообразие в игровой процесс. Операторы, которые используются в конструкциях условий, в программировании называются операторами ветвления.
IF — основной оператор для записи конструкций условий. Конструкции, записываемые с помощью этого оператора (назовём их "простыми условиями"), имеют две формы: однострочную и многострочную, — и в общем виде выглядят так:
! однострочная форма записи
IF [#выражение]: {команда 1} & {команда 2} & …
! многострочная форма записи
IF [#выражение]:
{команда 1}
{команда 2}
…
END
В данном случае, если верно условие [#выражение], выполняются команды {команда 1}, {команда 2} и т.д. Для однострочной формы записи это будут только те команды, которые идут в той же строке, что и оператор IF до конца строки; а для многострочной формы записи это будут те команды, которые идут в последующих строках после двоеточия и до специального ключевого слова END.END при многострочной форме записи должно стоять отдельной строкой.[#выражение] не верно, команды выполнены не будут.! если сумма a и b равна двум, ! переменной c присваивается значение 30 if a+b=2: c=30 ! Если в инвентаре нет апельсина, выводится текст if no obj "Апельсин": pl "У Вас нет апельсина." ! это тоже простая однострочная форма if ((a+b)/c)=45+54 or (b<5 or c>45) and no obj 'лопата' and $f=$vvv+'RRRRR': p 'OK' & goto 'Next'
if библиотека = 0: узнал_о_тусовке = 0 библиотека_вернулся = 1 gt 'библиотека' end if a+b=2: c=30 end
IF, не должны идти никакие команды, иначе плеер посчитает такой оператор условия однострочным, и команды в последующих строках будут выполняться в любом случае, независимо от того, верным окажется условие или нет. Пример такой ошибочной записи: if библиотека = 0: узнал_о_тусовке = 0 библиотека_вернулся = 1 &! эта строчка будет выполняться в независимости от верности условия gt 'библиотека' &! и эта end &! ключевое слово end - просто игнорируется
ELSE — ключевое слово, использующееся совместно с оператором IF, и которое служит для предоставления альтернативы, если условие не выполнено. Ключевое слово ELSE так же имеет две формы записи: однострочную и многострочную. Многострочную форму записи ELSE можно использовать только в многострочной конструкции оператора IF, тогда как однострочную форму записи можно использовать как в однострочной, так и в многострочной, конструкции оператора IF. Общая форма записи:
! однострочная форма записи
IF [#выражение]: {команда д1} & {команда д2} & … ELSE {команда н1} & {команда н2} & …
! в многострочном IF
! многострочная форма ELSE
IF [#выражение]:
{команда д1}
{команда д2}
...
ELSE
{команда н1}
{команда н2}
...
END
! однострочная форма ELSE
IF [#выражение]:
{команда д1}
{команда д2}
...
ELSE {команда н1} & {команда н2} & ...
! команды в следующих строках
! до END игнорируются
END
Здесь, если условие[#выражение] верно, выполняются команды от двоеточия до ключевого слова ELSE, а если условие [#выражение] не верно, выполняются команды от ключевого слова ELSE и до конца конструкции условия.ELSE можно ставить, а можно не ставить двоеточие.ELSE должны быть записаны в одной строкеELSE используется в многострочной форме записи IF, все команды, которые идут в последующих строках после ELSE до END игнорируются.! если сумма a и b равна двум, переменной c присваивается значение 30 ! в противном случае (то есть если сумма a и b не равна двум) ! переменной c присваивается значение 10 if a+b=2: c=30 else c=10 ! в зависимости от того есть ли в инвентаре апельсин ! выводится соответствующий текст if obj "Апельсин": pl "У Вас есть апельсин." else pl "У Вас нет апельсина." ! однострочная форма else внутри многострочной if if $левая_рука = 'Великий меч': gosub 'atack', 300 gosub 'health.prove' gosub 'win.prove' else gosub 'atack', atack_power end
ELSE;if a+b=2: c=30 else c=10 end if obj "Апельсин": pl "У Вас есть апельсин." else pl "У Вас нет апельсина." end if len($curtoken) > 0: $tokens[curtoken_num] = $curtoken tokens_count = curtoken_num + 1 else tokens_count = curtoken_num end
ELSEIF — ключевое слово, которое используется совместно с оператором IF и позволяет определять на одном уровне вложенности последовательно-исключающие условия. Ключевое слово ELSEIF имеет однострочную и многострочную формы записи. Многострочную форму записи можно использовать только в многострочных конструкциях с оператором IF, а однострочную — как в многострочных, так и в однострочных конструкциях с оператором IF. Общие формы записи:
! однострочная в однострочном условии
IF [#выражение 1]: {набор команд 1} ELSEIF [#выражение 2]: {набор команд 2} ELSE {последний набор команд}
! многострочная в многострочном условии
IF [#выражение 1]:
{набор команд 1}
…
ELSEIF [#выражение 2]:
{набор команд 2}
…
ELSEIF … :
…
ELSE
{последний набор команд}
…
END
! однострочная в многострочном условии
IF [#выражение 1]:
{набор команд 1}
…
ELSEIF [#выражение 2]: {набор команд 2} & …
ELSEIF … : …
ELSE {последний набор команд}
END
Работает это следующим образом. Если [#выражение 1] верно, выполняются команды {набор команд 1}. Если [#выражение 1] неверно, но верно [#выражение 2], выполняются команды {набор команд 2}, и т.д. И только если неверны все выражения в текущей конструкции условия, выполнятся команды после ELSE. Верность выражения [#выражение 1] не исключает верности выражения [#выражение 2], однако верность выражения [#выражение 2] исключает верность выражения [#выражение 1].if number mod 2 = 0: *pl "Число чётное" else *pl "Число нечётное" end ! эквивалентно *pl $iif(number mod 2 = 0,"Число чётное","Число не чётное")