Перейти к основному содержимому

20.20. Как сделать перемещение на случайную локацию?

В: Как сделать перемещение на случайную локацию?

Например, чтобы портал переносил случайным образом на одну из локаций.

О:

Можно прописать выбор из случайного варианта прямо в действии:

act "Войти в портал":
i=rand(1,5)
if i=1:
goto "Мир вечного полдня"
elseif i=2:
goto "Плоский мир"
elseif i=3:
goto "Земля-616"
elseif i=4:
goto "Трансметрополитен"
elseif i=5:
goto "Атлантида"
end
end

Можно заранее внести названия локаций в массив (создаём список):

$portal[0]="Мир вечного полдня"
$portal[1]="Плоский мир"
$portal[2]="Земля-616"
$portal[3]="Трансметрополитен"
$portal[4]="Атлантида"

act "Войти в портал":
goto $portal[rand(0,4)]
end

Последний вариант удобен тем, что посещённые места можно убирать из массива, и таким образом игрок не сможет посетить одно место дважды, но всё равно будет посещать их в случайном порядке:

! если значение переменной-флага равно нулю

if portal_flag=0:
! вписываем названия локаций в массив (создаём список)

$portal[0]="Мир вечного полдня"
$portal[1]="Плоский мир"
$portal[2]="Земля-616"
$portal[3]="Трансметрополитен"
$portal[4]="Атлантида"
! выставляем переменной-флагу значение 1

portal_flag=1
end
! действие

act "Войти в портал":
! получаем текущий размер массива

local size=arrsize('$portal')
! если размер массива больше нуля

if size>0:
! выбрасываем случайное число от нуля до номера последней ячейки массива

local i=rand(0,size-1)
! запоминаем текущее название выбранной локации

local $i_act=$portal[i]
! убираем это название из списка

killvar '$portal',i
! переходим на эту локацию

goto $i_act
else
! если размер массива 0

! портал не работает

*pl "Портал больше не работает."
end
end