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

Урок 3. Инвентарь


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

Чтобы добавить предмет в инвентарь, есть команда «ADDOBJ», после которой идёт имя предмета. А для того, чтобы удалить предмет, есть команда «DELOBJ», после которой идёт имя удаляемого предмета.

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

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

С помощью условий мы заранее проверяем, есть ли у игрока достаточно денег, чтобы купить тот или иной предмет. И если денег хватает - добавляем действие покупки этого предмета. Когда игрок выбирает действие купить что-либо, мы забираем у него монеты, добавляем в его инвентарь предмет и делаем переход на ту же локацию («Магазин»), чтобы вывелось обновлённое количество денег.
Следующим важным моментом будет механизм «дарения» предметов. Он будет реализован в локации «Дом».

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

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

Конструкция «IF OBJ 'имя_предмета'» проверяет, есть ли у игрока в инвентаре указанный предмет. В нашем случае мы проверяем наличие тех предметов, которые мы можем купить в магазине. И если у игрока есть такие предметы - создаём действие «дарения» этих предметов. Когда игрок совершит действие, мы заберем у него тот предмет, который он хочет подарить и выводим диалог благодарности за подарок. К тому же, мы используем команду «DELACT», которой удаляем действие, указанное после этой команды.