Пишем QSP-игру в текстовом редакторе - Урок 2. Переменные, Условия
Автор: elmortem   
14.04.2010 15:16
Индекс материала
Пишем QSP-игру в текстовом редакторе
Урок 1. Локации, Действия, Переходы
Урок 2. Переменные, Условия
Урок 3. Инвентарь
Урок 4. Настройки, Форматирование
Все страницы

Урок 2. Переменные, Условия


Пусть у нас будет игра из трёх локаций. В одной локации игрок сможет зарабатывать деньги, в другой - тратить их на различные предметы, в третьей - дарить эти предметы различным людям. К этим трём добавим ещё одну, стартовую, локацию, в которой будет объясняться задача игрока.

Напишем каркас.

Пример (3.txt):

#Начало
' Ваша цель - зарабатывать деньги, покупать на них подарки и дарить своим близким.'
ACT 'Начать игру':GOTO 'Дом'
-
#Работа
' Порт находится на самой южной окраине города. Здесь постоянно загружаются и разгружаются различные суда. Рабочих рук не хватает и складской бригадир всегда рад заплатить деньги за помощь.'
ACT 'Идти домой':GOTO 'Дом'
ACT 'Идти в магазин':GOTO 'Магазин'
-
#Магазин
' Магазин небольшой, но тут обычно есть всё, что нужно простому горожанину. Витрины заставлены различными товарами. У кассы стоит полная женщина и хмуро смотрит на вас.'
ACT 'Идти домой':GOTO 'Дом'
ACT 'Идти в порт':GOTO 'Работа'
-
#Дом
' Дома всегда очень уютно. И вкусно пахнет едой. Мама, сидя в кресле, вяжет носки. Отец с вашим братом чинит скворечник. Сестра хлопочет на кухне. Дома всегда хорошо.'
ACT 'Идти в порт':GOTO 'Работа'
ACT 'Идти в магазин':GOTO 'Магазин'
-

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

Пример:

Имя_переменной = 10

Сам механизм зарабатывания денег будет у нас очень простым. Нужно будет перенести 3 ящика и тогда бригадир будет давать игроку 5 монет. Для этого нужно будет сделать ещё одну переменную, в которой будет указано число перенесённых игроком ящиков и если их 3, то добавлять игроку деньги, и очищать счётчик ящиков. Наш квест станет таким:

Пример (4.txt):

#Начало
' Ваша цель - зарабатывать деньги, покупать на них подарки и дарить своим близким.'
ACT 'Начать игру':GOTO 'Дом'
-
#Работа
' Порт находится на самой южной окраине города. Здесь постоянно загружаются и разгружаются различные суда. Рабочих рук не хватает и складской бригадир всегда рад заплатить деньги за помощь.'
' У вас <<Деньги>> монет.'
' Вам нужно перенести <<3-Ящик>> ящика.'
ACT 'Идти домой':GOTO 'Дом'
ACT 'Идти в магазин':GOTO 'Магазин'
ACT 'Перенести ящик':
Ящик = Ящик + 1
IF Ящик = 3:
Деньги = Деньги + 5
Ящик = 0
END
GOTO 'Работа'
END
-
#Магазин
' Магазин небольшой, но тут обычно есть всё, что нужно простому горожанину. Витрины заставлены различными товарами. У кассы стоит полная женщина и хмуро смотрит на вас.'
' У вас <<Деньги>> монет.'
ACT 'Идти домой':GOTO 'Дом'
ACT 'Идти в порт':GOTO 'Работа'
-
#Дом
' Дома всегда очень уютно. И вкусно пахнет едой. Мама, сидя в кресле, вяжет носки. Отец с вашим братом чинит скворечник. Сестра хлопочет на кухне. Дома всегда хорошо.'
' У вас <<Деньги>> монет.'
ACT 'Идти в порт':GOTO 'Работа'
ACT 'Идти в магазин':GOTO 'Магазин'
-

Для того, чтобы в тексте локации вывести значение переменной используется конструкция «'<<Имя_переменной>>'». Обратите внимание в каждой локации выводится количество монет у игрока. К тому же, в локации «Порт» показывается количество ящиков, которое нужно перенести, чтобы получить деньги.

Ветвления в QSP задаются командой «IF», после которой идёт условие и ставится двоеточие. Затем идут инструкции, которые выполняются, если условие верное и ставится завершающая команда «END».

В нашем случае мы проверяем, равна ли переменная «Ящик» 3-м (все ли ящики перенесли). Если равна, то мы увеличиваем переменную «Деньги» на 5 (наш заработок) и сбрасываем переменную «Ящик» в 0, чтобы можно заново таскать ящики и зарабатывать деньги.

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

Отконвертируйте и запустите пример, теперь игрок сможет зарабатывать деньги переноской ящиков.