Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

11.6. Как упростить условие?

В: Как упростить условие?

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

if посетил_лес=1 and посетил_пустыню=1 and посетил_ледник=1:
    act "Выйти в море":
        
!...

О:

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

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

# лес

if посетил_лес=0:
    посетил_лес=1
    счётчик_посещений+=1
end

--- лес ---


# пустыня


if посетил_пустыню=0:
    посетил_пустыню=1
    счётчик_посещений+=1
end

--- пустыня ---


# ледник


if посетил_ледник=0:
    посетил_ледник=1
    счётчик_посещений+=1
end

--- ледник ---

Теперь на локации, где нам нужно проверять условие:

if счётчик_посещения=3:
    act "Выйти в море":
        
! ... код