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

Урок шестой. Берём предметы.

В текстовых играх часто применяются предметы. Для того, чтобы игрок всегда знал, какие предметы у него с собой, в QSP есть специальное окно инвентаря(с заголовком "Предметы"). Когда игрок берет предмет, тот появляется в инвентаре.

Для того, чтобы добавить предмет в инвентарь, используется оператор ADDOBJ, для того, чтобы удалить предмет из инвентаря, используется оператор DELOBJ.


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

ADDOBJ 'Название предмета'
DELOBJ 'Название предмета'



Есть три основных способа брать предмет, рассмотрим каждый на примере.


Создайте локацию "Начало", с описанием "Игра про гномов." и действием с переходом на локацию "Играть". Отключите неиспользуемые окна - дополнительное описание и строку ввода.


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

Вы спасли гномьего короля от смерти в лапах тигра.
 - Бери алмазов сколько захочешь, бери рубинов, сколько унесёшь, бери Меч Справедливости, он у нас один.



Берем предметы без ограничений.

Напишем действие для того, чтобы брать алмазы. Создайте действие "Взять алмаз". В коде действия пишем:

ADDOBJ 'Алмаз'

Действие готово. Теперь, когда игрок выберет это действие, в инвентаре добавится предмет "Алмаз". Сколько раз нажмет, столько алмазов добавится, без ограничений по количеству.



Берем не более 5 предметов.

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

IF Количество_Рубинов < 5:
  ADDOBJ 'Рубин'
  Количество_Рубинов = Количество_Рубинов + 1
ELSE
  'Жадность не порок, но вы не можете унести больше, чем уже взяли.'
END

В этом действии делается проверка на количество рубинов, которые уже взял игрок. Если количество рубинов меньше 5, то он может взять еще один рубин. Если нет, то выводим строку текста.

Обратите внимание на строку

Количество_Рубинов = Количество_Рубинов + 1

Здесь переменная "Количество_Рубинов" увеличивается на 1 каждый раз, когда игрок берет рубин. Такую переменную называют "счетчиком". Пока игрок не взял ни одного рубина, в этой переменной будет значение 0. Когда игрок будет брать рубины, это значение будет увеличиваться, пока не достигнет максимального значения 5.



Берем только один предмет.

Напишем действие для того, чтобы взять меч. Это действие будет присутствовать на локации только в том случае, если игрок еще не взял меч. Поэтому мы не создадим действие как обычно, а напишем его в коде самой локации, "обернув" его в условие. Пишем в коде локации:

IF Меч = 0:
  ACT 'Взять Меч Справедливости':
    ADDOBJ 'Меч Справедливости'
    Меч = 1
    GOTO $CURLOC
  END
END

Переменная "Меч" принимает всего два значения: 0 и 1. Такую переменную назвают "флажком". Изначально в переменной "Меч", как и в любой другой числовой переменной, хранится значение 0. Условие "Меч = 0" выполняется, и действие "Взять Меч Справедливости" добавляется в список действий.

Рассмотрим подробно, что произойдет, когда игрок выберет это действие.

    ADDOBJ 'Меч Справедливости'

В инвентарь добавляется предмет "Меч Справедливости".

    Меч = 1

В переменную "Меч" записывается значение 1. Мы "установили флажок", теперь игра "помнит", что игрок взял меч.

    GOTO $CURLOC

Переход на текущую локацию. Заново выводится описание локации, заполняется список действий, и выполняется код локации. Условие "Меч = 0" не выполнится, и поэтому действие "Взять Меч Справедливости" не будет добавлено.



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