Учебник по QSP для редактора QGen - Урок пятый. Условия.
Автор: Nex   
27.02.2009 10:41
Индекс материала
Учебник по QSP для редактора QGen
Урок первый. Создаём игру.
Урок второй. Переходы по локациям.
Урок третий. Простейшая игра с выбором.
Урок четвертый. Переменные.
Урок пятый. Условия.
Урок шестой. Берём предметы.
Урок седьмой. Применение предметов.
Все страницы

Урок пятый. Условия.

Условия - самый важный и мощный инструмент в разработке текстовой игры. Автору требуется не только вести учет состояния игры(переменные), но и делать прохождение игры зависящим от изменившегося состояния. Для этих целей в QSP есть условный оператор - "IF".


Записывается так:

IF условие :
    действие1
ELSE
    действие2
END

Если условие выполняется, то будет выполнено действие1, если нет - действие2.


Когда нам требуется задать только действие1, запись будет короче:

IF условие :
    действие1
END



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


Локация "Начало"

Создайте локацию "Начало", в описании напишите "Игра про космос."

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

KILLALL
SHOWINPUT 0
SHOWSTAT 0
SHOWOBJS 0

Создайте действие "Играть" с переходом на локацию "Играть".


Локация "Играть"

Создайте локацию "Играть". В описании пишем: "Вы долго исследовали пояс астероидов и настала пора возвращаться на Землю."


Создайте действие "Связаться с диспетчером" с переходом на локацию "Диспетчер".


Создайте действие "Лететь на Землю". В коде действия пишем условие:

IF Курс_Полёта = 1:
  GOTO 'Победа'
ELSE
  GOTO 'Проигрыш'
END

Рассмотрим подробно.

Мы проверяем значение переменной Курс_Полёта. Условие "Курс_Полёта = 1" означает "Значение переменной Курс_Полёта должно равняться 1". Если значение равняется 1, то при нажатии этого действия будет переход на локацию "Победа", иначе - переход на локацию "Проигрыш".


Локация "Диспетчер"

Создайте локацию "Диспетчер". В описании пишем

 - Вызываю диспетчера, вызываю диспетчера.
 - Диспетчер на связи, высылаю вам курс полёта через пояс астероидов до Земли.
 - Курс полёта принял.

В коде локации пишем

Курс_Полёта = 1

Здесь мы "запоминаем", что игрок зашел в локацию, записав в переменную Курс_Полёта значение 1. Если игрок не заходил в локацию, то значение переменной будет 0.


Создайте действие "Завершить сеанс связи" с переходом на локацию "Играть".


Локация "Победа"

Создайте локацию "Победа". В описании локации пишем: "Вы благополучно долетели до Земли. Хорошо, что вы связались с диспетчером и получили у него курс полёта."


Локация "Проигрыш"

Создайте локацию "Проигрыш". В описании пишем: "Лететь без курса полёта через пояс астероидов - чистой воды самоубийство. Вам не повезло и один из астероидов протаранил ваш корабль, так что на Земле вас так и не дождались."


Создайте действие "Начать сначала" с переходом на локацию "Начало".


Игра готова!



Итог: в этом уроке мы научились использовать условия.