Содержание

Назад: Кортежи

Условия

Условия — это такие особые конструкции в QSP, которые позволят сделать вашу игру по настоящему интерактивной. Они позволяют разветвлять события, происходящие в игре в зависимости от уже сложившихся условий, и таким образом вносить разнообразие в игровой процесс. Операторы, которые используются в конструкциях условий, в программировании называются операторами ветвления.

Операторы условий

Для многострочных форм записи допускается вложенность неограниченной глубины. Каждый уровень вложения должен заканчиваться своей строкой END.

Некоторые примеры:

if a+b<3 or y=8:
  p 'A+B<3 или Y=8'
  nl 
  if j=88: nl & p 'NEXT' 
  if $h='ooo':
    p 'loo' & jump 'lll'
  end
end

if a = 0:
  'abc1234'
  if b = 0: '0' else '1'
  if j = 88: nl & p 'NEXT'
  if $h='ooo':
    p 'loo' & jump 'lll'
  else
    p 'sample text'
    v = 8
  end
  1234
else:
  '01234'
  g = 78
end

if ((a+b)/c)=45+54 or (b<5 or c>45) and no obj 'лопата' and $f=$vvv+'RRRRR': p 'OK' & goto 'Next'
if был_здесь[$curloc]: exit
if a<3: jump 'sss'
if $имя = '': msg 'Введите имя!' & jump 'ввод'
if a+b=2:c=30 & gt 'next' else c=10

Пример реализации однострочного варианта ELSEIF:

if n=0: *pl "Ноль" elseif n=1: *pl "Один" elseif n=2: *pl "Два"

Несколько примеров неверной записи:

! в этом случае, если условие не будет выполнено,
! плеер проигнорирует только команду k1=34
! поскольку посчитает, что это однострочное условие
if abcd=3: k1=34
    k2=35 & ! эта команда будет выполняться всегда
    k3=36 & ! эта комнада будет выполняться всегда
end & ! этот end будет проигнорирован

! данная строка выведет ошибку "неизвестное действие"
! так как однострочные формы записи не должны оканчиваться end`ом
if abcd=3: k1=34 else k1=25 end

Пример использования однострочных ELSEIF и ELSE (аналог CASE на QSP):

if 0:
    elseif z = 0: y = x * 100
    elseif z = 1: y = x * 99
    elseif z = 2: y = x * 88
    elseif z = 3: y = x * 77
    else: y = x * 11
end

Функции обработки условий

Вперёд: Пользовательские функции и процедуры