155
правок
Изменения
Перейти к навигации
Перейти к поиску
м
Нет описания правки
__NOTOC__
==Вводное слово, КоментарииКомментарии==
[[QSP]] - программа для игры в текстовые квесты специального формата. Для того, чтобы написать свой текстовый квест вам понадобится любой текстовый редактор и программа [[TXT2GAM]]. Для более удобного использования этой программы я написал специальную оболочку [[GAMConv]], которой вы можете пользоваться для конвертирования кода уроков.<br>
В примерах будут использоваться коментариикомментарии, строки, которые игрок не увидит и которые служат для того, чтобы можно было делать в коде игры различные заметки.
''Пример:''
<pre>! эта строка видна только создателю квеста, игрок её не увидит</pre>
О других применениях коментариев комментариев смотрите в Уроке 5.
==Урок 1. Локации, Действия, Переходы==
Текстовый квест в [[QSP]] состоит из отдельных локаций , на которых могут выполняться различные игровые действия. Каждая локация имеет начало (тут же указывается имя локации), код локации (середину) и конец (знак «-», минус).
''Пример:''
-</pre>
Проигрывание квеста начинается с самой первой локации. Традиционно эта локация называется "Начало".
Для того, чтобы вывести в игре текст вы просто пишете строку в коде локации, заключённую в опострофы апострофы «'».
''Пример (1.txt):''
ACT 'Вернуться обратно':GOTO 'Начало'
-</pre>
Вторая локация создаётся точно так же, как и первая. Как можно аметитьзаметить, действие создаётся командой «ACT», после которой идёт название действия в виде строки заключённой в апострофы и двоеточие. После двоеточия пишутся инструкции, которые игра выполнит после того, как игрок попытается выполнить действие. А после инструкций ставится команда «END», которая означает конец цействия. Если инструкция одна, то мы можем писать её сразу после двоеточия, на той же строке, в этом случае «END» ставить не обязательно (см. Вторая_локация). В нашем случае инструкциями является переход на другую локацию. Он осуществляется командой «GOTO», после которой идёт имя новой локации, заключённой в апострофы.<br>Как вы уже заметили , все строки в [[QSP]] заключены в апострофы, это специфика синтаксиса, которую необходимо соблюдать.<br>Отконвертировав этот пример , вы сможете походить по двум локациям.Это основа всех квестов на [[QSP]]. Дальше мы попробуем неспеша сделать небольшой квест , в каждом новом уроке добавляя ему новые элементы, пока не охватим все возможности [[QSP]].
==Урок 2. Переменные, Условия==
Пусть у нас будет игра из трёх локаций. В одной локации игрок сможет зарабатывать деньги, в другой - тратить их на различные предметы, в третьей - дарить эти предметы различным людям. К этим тём трём добавим ещё одну, стартовую, локацию, в которой будет объясняться задача игрока. Напишем каркас.
''Пример (3.txt):''
-
#Дом
' Дома всегда очень уютно. И вкусно пахнет едой. Мама, сидя в кресле, вяжет носки. Отец с вашим братом чинит скворечник. Сестра хлопочит на кухне. Дома всегда хорошёхорошо.'
ACT 'Идти в порт':GOTO 'Работа'
ACT 'Идти в магазин':GOTO 'Магазин'
-</pre>
Можете откомпилировать и походить по городу.<br>Теперь нам нужно добавить игроку деньги и механизм их зарабатывания. Деньги мы реализуем с помощью переменных. Перемнные Переменные бывают двух типов: строковые, в которые можно записать любой текст, и числовые, куда можно записать любое целое число. В нашем случае мы будем пользоваться числовыми перемннымипеременными. Чтобы присвоить перемнной переменной какое-либо значение , нужно написать её имя, поставить знак равно и указать значение, которое мы хотим записать в перменнуюпеременную.
''Пример:''
ACT 'Идти в магазин':GOTO 'Магазин'
-</pre>
Для того, чтобы в тексте локации вывести значение переменной используется конструкция «'<<Имя_переменной>>'». Таким образом мы изменили все локации, чтобы на них выводилось количество монет у игрока. К тому же , в локации «Порт» показывается кличество количество ящиков, которое нужно перенести, чтобы получить деньги.Условия в [[QSP]] задаются командой «IF», после которой идёт само условие и ставится двоеточие. Затем идут инструкции, которые выполнятся, если условие верное и ставится команда «END», которая завершает условие. В нашем случае мы проверяем, равна ли переменная «Ящик» трём. Если равна, то мы увеличиваем переменную «Деньги» на пять и приравниваем переменную «Ящик» к нулю, чтобы можно было заного заново таскать ящики и зарабатывать деньги.Чтобы текст игры обновился и игрок увидел новые значения переменных , нужно перейти на ту же локацию.
Отконвертируйте и запустите пример, теперь игрок сможет зарабатывать деньги переноской ящиков.
==Урок 3. Инвентарь==
Теперь нам нужно добавить игроку возможность покупать различные предметы в магазине и затем дарить. Для предметов очень хорошё хорошо подходит Инвентарь. Теперь купленные предметы игрок сможет носить с собой и дарить своим блюзким близким, когда захочет.Чтобы добавить предмет в инвентарь , есть команда «ADDOBJ», после которо которой идёт имя предмета. А для того, чтобы удалить предмет естькоманда , есть команда «DELOBJ», после которой так же также идёт имя предмета, который мы хотим удалить.
''Пример (5.txt):''
ACT 'Идти в магазин':GOTO 'Магазин'
-</pre>
С помощью условий мы заранее проверяем, есть ли у игрока достаточно денег, чтобы купить тот или иной предмет. И если денег хватает - добавляем действие покупки этого предмета. Когда игрок выбирает действие купить что-либо , мы забираем у него монеты, добавляем в его инвентарь предмет и делаем переход на ту же локацию («Магазин»), чтобы количество денег пересчиталось.
Следующим важным моментом будет механизм "дарения" предметов. Он будет реализован в локации «Дом».
ACT 'Идти в магазин':GOTO 'Магазин'
-</pre>
Конструкция «IF OBJ 'имя_предмета'» проверяет, есть ли у игрока в инвентаре указанный предмет. В нашем случае мы проверяем наличие тех предметов, которые мы можем купить в магазине. И если у игрока есть такие предметы - создаём действие «дарения» этих предметов. Когда игрок совершит действие , мы забирем заберем у него тот предмет, который он хочет подарить и выводим диалог благодарности за подарок. К тому же , мы используем команду «DELACT», которой удаляем действие, указанное после этой команды.
'''''Продолжение следует...'''''
[[Категория:Технические статьи]] [[Категория:Статьи]]