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

Урок четвертый. Переменные.

Переменные - это "память" игры.


В переменных хранится информация обо всем, что изменяется в процессе игры. Автор называет переменные так, как ему удобно, главное следить за тем, чтобы в имени переменной не было других знаков, кроме букв, цифр и символов подчеркивания. Пробелы в имени не допускаются, для разделения пользуйтесь подчеркиванием, вот так: моя_первая_переменная. Если в начале имени стоит знак "$", значит, в переменной хранится текст, если нет, то в ней хранится число.


Основные действия с переменными, это запись, чтение и вывод.


Запись

Когда мы говорим плееру, "в переменной a будет храниться значение 5" - это запись в переменную. Также запись назвают "присваиванием", это одно и то же.

В коде это выглядит так:

a = 5

Мы записали в переменную "a" числовое значение 5. Знак "=" здесь не обозначает равенство, как в математике, он обозначает операцию присваивания. Переменная, в которую мы записываем значение, должна всегда стоять слева от знака "=".


Как же записать в переменную не число, а текстовую строку? Очень просто. Во-первых, не забываем ставить знак "$" в начале имени переменной. Во-вторых, заключаем строку в апострофы.

$строка = 'Быть или не быть?'

Мы записали в переменную "$строка" текстовое значение "Быть или не быть?"


Чтение

Чаще всего, значение переменной нам требуется для нового присваивания, либо для проверки условия.

Вот, например, мы прибавляем 10 к переменной "a", и записываем результат в переменную "k".

k = a + 10

Допустим, в переменной "a" было записано 5. Тогда k = 5 + 10 = 15. В переменной "k" теперь хранится значение 15. Обратите внимание, в этой строке кода было произведено чтение значения переменной "a", вычисление выражения "a + 10", и запись результата в переменную "k".

Уменьшаем значение переменной "k" на 2.

k = k - 2

В переменной "k" было записано 15. Значит, k = 15 - 2 = 13. Теперь в переменной "k" хранится значение 13.


Для текстовых переменных существует операция "склеивания строк", записывается она знаком "+".

$вопрос = $строка + ' Вот в чем вопрос.'

Теперь в переменной "$вопрос" хранится текстовое значение "Быть или не быть? Вот в чем вопрос."


Использование переменных в условиях мы разберем в следующем уроке.


Вывод

Для вывода используйте двойные угловые скобки, "<<" и ">>". Между двойными угловыми скобками напишите имя переменной, например "<<$вопрос>>", или "<>", и при выводе плеер сам подставит текущее значение переменной, при этом угловые скобки выведены на экран не будут.



Начнем применять переменные на практике. Создайте новую игру, назовите ее "Planet Master".


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

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

В коде локации(поле "выполнить при посещении") отключите неиспользуемые окна. На этот раз окно инвентаря нам не понадобится, поэтому его тоже отключаем.

SHOWSTAT 0
SHOWINPUT 0
SHOWOBJS 0

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


Локация "СоздатьПланету"

Создайте локацию "СоздатьПланету". В коде локации пишем

$Имя = INPUT('Придумайте имя для своей планеты.')
Температура = 100
'Ваша планета называется <<$Имя>>.'

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

В первой строке, мы просим игрока ввести имя для планеты. В скобках функции INPUT указано приглашение, которое прочтет игрок. Текст, который введет игрок, будет сохранен в текстовой переменной $Имя.

Вторая строка задает значение для числовой переменной Температура. В этой переменной будет храниться текущая температура для планеты.

В третьей строке на экран описания локации выводится текст. В выводимом тексте, вместо выражения <<$Имя>> плеер подставит значение переменной $Имя, то есть тот текст, который ввел игрок. Если игрок ввел "Персефона", то на экране будет написано "Ваша планета называется Персефона."


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


Локация "Планета"

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

Имя планеты: <<$Имя>>
Температура на планете: <<Температура>> градусов.


При выводе на экран, вместо <<$Имя>> и <<Температура>> будут подставлены значения указанных переменных.

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

Создайте действие "Поднять температуру на 10 градусов".

В коде действия пишем

Температура = Температура + 10
GOTO $CURLOC

В первой строке, мы увеличиваем на 10 единиц значение переменной Температура. Если температура планеты была 100 градусов, то при выборе этого действия температура планеты станет 110 градусов, и так далее.

Вторая строка задает переход на текущую локацию. $CURLOC - специальная функция, которая всегда возвращает имя текущей локации, в нашем случае это локация "Планета".

Зачем же нам "переходить" на локацию, на которой мы и так уже находимся? Это нужно для того, чтобы обновить текст описания локации. Переменная Температура была изменена, но изменения в описании появятся только при "входе" на локацию, поэтому мы должны явно задать переход.

Создайте аналогичное действие "Снизить температуру на 10 градусов".

Создайте действие "Установить комнатную температуру". Код действия:

Температура = 25
GOTO $CURLOC

При выборе этого действия, температура планеты станет 25 градусов, вне зависимости от того, какой она была. Обычное присваивание.

Создайте действие "Создать новую планету" с переходом на локацию "СоздатьПланету". Когда игроку надоест одна планета, он может выбрать это действие и создать новую.


Игра готова!



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