Они самые. предлагаю вести такую тему, где будет по шагам описано создание игры на досурке.
UPD уроки по досурке (URQ_DOS от 30.11.04). Скачать её(досурку), а так же её описание можно здесь: http://urq.plut.info/soft (см ссылки:
цитата:
Скачать URQ_DOS от 30.11.04 - 132 Кб Описание URQL для URQ_DOS версии 1.35 от 23.11.2006 года от Корвина.
) UPD(11.02.09, 0:59): оказался недостаточно организован, что бы вести уроки. НО с удовольствием отвечу в этой теме на любые вопросы по urq_dos. появляюсь на форуме не реже 1 раза в неделю
Отправлено: 12.01.09 15:46. Заголовок: вот простейший приме..
вот простейший пример:
цитата:
:хоббит pln pln Вы у хоббичьей норы. pln У входа в нору на скамеечке сидит Бильбо Беггинс, и курит трубку. pln btn разговор, поприветствовать хоббита btn мост, идти на север- к мосту через речку end
:мост pln pln Вы у моста. pln Мост разрушен. Прохода нет! pln btn хоббит, идти обратно btn ремонт, а можно ли его починить? end
если вышеприведённый текст набить в блокноте в файл, к примеру game.qst, и проиграть его проигрывателем urq_dos.exe(72кб), то в досовском окошке на экране увидим описание игровой ситуации:
цитата:
Вы у хоббичьей норы. У входа в нору на скамеечке сидит Бильбо Беггинс, и курит трубку.
а чуть ниже- варианты возможных действий:
цитата:
поприветствовать хоббита идти на север- к мосту через речку
причём, выбрав второй вариант- перейдём к другой игровой ситуации, описанной в тексте программы под названием "мост".
да, не всем может понравится досовская консоль. ну, в таком случае можно воспользоваться fireurq.
Отправлено: 12.01.09 15:55. Заголовок: Ну вот- начало полож..
Ну вот- начало положено! Хотя я вообще-то предполагал как-то более упорядоченно начать, а не так сумбурно и сразу. Насчёт FireURQ: это, конечно, хороший выбор, но релиза пока нет. даже не известно, как будет выглядеть его интерфейс. Так что, если без фантастики, то будем ориентироваться на "URQ_DOS от 30.11.04". Скачать его можно здесь: http://urq.plut.info/soft
Запускать из командной строки, например, Total Commander-а:
цитата:
urq_dos.exe game.qst
Настроить шрифт можно через левый верхний значок появившейся консоли: свойства/шрифт.
Отправлено: 12.01.09 16:02. Заголовок: qwerty, а лучше- чер..
qwerty, а лучше- через bat-файл. да, кстати Хелп по AkURQ от Korwin'a по твоей ссылке не скачивается- он пропал вместе со всем аплоадом. какая жалость! я как-то скачивал весь аплоад НО, к сожалению, на момент его исчезновения у меня на винте остались жалкие крохи. всё собирался скачать снова- да так и опоздал... выкладываю хелп по URQL от Корвина: http://slil.ru/26532134
upd
Внёс исправление 27.01.09-го в 16:42 - по ссылке в сообщении, действительно, скачивается описание не Акурки, а языка URQL, который поддреживается досуркой и фуркой. Диалект Акурки слегка отличается.
Отправлено: 12.01.09 16:18. Заголовок: Значит так, УРОК ПЕР..
Значит так, УРОК ПЕРВЫЙ:
Ну, из-за слегка поспешных действий noname, первые несколько операторов мы можем рассмотреть на живом примере. Хотя в дальнейшем мы постепенно создадим другой пример, и без цитат из Толкиена. Авторские права, всё-таки. Итак:
1. Текст программы разбит на локации. Названия локаций пишутся после знака двоеточие " : "
2. Оператор end завершает описание локации. Дойтя до end интерпретатор завершает обработку, и ждёт выбора действия игроком. Если же никаких действий в данной локации не предусмотрено, то end завершит игру.
3. Оператор pln выводит текст, после чего переводит строку. это как writeln в Паскале, или print в Бэйсике.
4. Оператор "btn локация, название" создаёт 'кнопку'(она же бАттон, с ударением на А), при выборе игроком которой, произойдёт переход на локацию с названием 'локация'. Надпись на кнопке (описание выбора игрока) пишется через запятую. Т е кнопка btn локация, название будет видна в игре как название
Всё не так просто- всё гораздо проще, хотя имеется и множество ньюансов. На сегодня всё, загляну сюда ещё через неделю!
Отправлено: 19.01.09 17:22. Заголовок: УРОК ВТОРОЙ: Пока не..
УРОК ВТОРОЙ:
Пока нет noname, надеюсь успеть дать вначале теорию, а уже потом- пример.
Итак, с помощью уже изученных в первом уроке операторов, уже можно создать игру любой сложности. Была бы задумка. С другой стороны, авторы иногда задумывают такие задумки, что реализовать их таким методом очень непросто. Например, пусть игрок играет шахматным конём, ходит по доске по шахматным правилам, и вступает в диалог только с теми, кто находится на соседних полях. Даже если из игры убрать остальных персонажей, то и тогда конь может находиться в 64-х ситуациях, каждую из которых придётся прописывать ручками. Ясно, что это- никуда не годится. В таких случаях авторам приходят на помощь переменные.
Даже если вы не собираетесь делать ничего столь замороченного, как описанное выше, переменные всё равно могут здорово упростить написание более-менее 'живой' игры. Пример:
:инициализация на_коне = 1 волшебный_меч = 0 принцесс_спасено = 0 узнал_секрет = 0 goto начало end
:начало pln pln Царь послал тебя выручить свою дочь из лап дракона. "Езжай куда угодно, pln да только без неё- не возращайся!" - таков был царский наказ. Делать нечего- pln собрался ты в путь-дорогу, снарядился лучшим оружием и доспехами. Лучшего pln коня тебе из царских конюшен отдали. Да только видано ли дело- с драконом pln справиться? pln btn развилка, дальше end
:развилка pln if на_коне=1 then pln Долго ли, коротко ли ты ехал, да прискакал к горюч-камню, у которого дорога if на_коне=0 then pln Долго ли, коротко ли ты шёл, да пришёл к горюч-камню, у которого дорога pln надвое разбегается. А на камне том надпись выбита: pln "Налево пойдёшь- коня потеряешь." pln "Направо- логово ужасного дракона. Можно звать просто Горынычем." pln btn старичок, налево btn горыныч, направо btn царь, назад- к царю if (узнал_секрет=1) and (волшебный_меч=0) then btn сдвинуть_камень, сдвинуть камень end
:старичок if на_коне=0 then goto старичка_нет pln pln Вскоре наткнулся ты на седого старичка, который расселся посреди дороги. pln - Подсоби, внучек, дай своего коня. А то я уже не ходок. А я тебе секрет pln открою. Да не один, а сразу три секрета. pln btn отдать_коня, отдать коня btn развилка, вернуться на развилку end
:отдать_коня pln pln Старичок лихо уселся на коня, и так повёл свою речь: pln - Первый секрет: надпись на камне выбил Горыныч. Я за объяву про коня ему pln свой жуб отдал. pln - Второй секрет: не всё оказывается таким, как кажется. Я вот, например, pln не старичок вовсе, а злой колдун Мамез в полном расцвете сил. pln - Третий секрет: к казённому добру надо относиться бережно, и малознакомым pln личностям коней не раздаривать. pln - Это всё. - сказал вмиг помолодевший Мамез, и умчался. pln pln На дороге остался клочок какой-то тряпки. pln на_коне=0 btn развилка, вернуться к камню btn подобрать_тряпку, подобрать тряпку end
:старичка_нет pln pln Дорога уходит в дальние дали. Тебе туда не надо. Тем более- без коня. if узнал_секрет=0 then pln На дороге ты видишь клочок какой-то тряпки. pln btn развилка, вернуться к камню if узнал_секрет=0 then btn подобрать_тряпку, подобрать тряпку end
:подобрать_тряпку pln pln Тряпка оказалась платком Мамеза, которым он, видимо, вытирал пот. На ней pln вышито: "Пельмени в печи, волшебный меч- под камнем. Не забудь поесть перед pln тем, как идти на работу. Твоя Василиса." pln pln Хмм... Видимо, не все секреты раскрыл тебе злой колдун! pln узнал_секрет=1 btn развилка, вернуться к камню end
:сдвинуть_камень pln pln Достав волшебный меч-кладенец, ты поставил камень на место. pln волшебный_меч=1 btn развилка, дальше end
:горыныч if принцесс_спасено=1 then goto логово pln pln В логове тебя встретил радушный Змей Горыныч в домашнем халате, и пушистых pln тапочках. Дипломатическая беседа проходила за обильным столом, прислуживала pln вам та самая царская дочь- Несмеяна. pln btn развилка, вернуться к развилке btn попросить, попросить Горыныча вернуть Несмеяну if волшебный_меч=1 then btn обмен, попробовать выменять Несмеяну на волшебный меч end
:логово pln pln Ты стоишь, в обнимку с Несмеяной, у логова Змея Горыныча. Вход заперт. pln btn развилка, к развилке end
:попросить pln pln Дракон напрочь отказался. Ни уговоры, ни твоё оружие на него не подействовали. pln А взять её без разрешения- совесть не позволяет. pln btn горыныч, дальше end
:обмен pln pln - Как он у тебя оказался? Впрочем, неважно: забирай девку, а у меня появились pln срочные дела... pln принцесс_спасено=1 btn горыныч, дальше end
:царь if принцесс_спасено=0 then goto царь_недоволен pln pln Как вернулся ты к царю с его дочерью- сразу он закатил пир на весь мир... pln А на утро- на дочке пришлось жениться. pln pln Вот и сказочке КОНЕЦ, а кто слушал- молодец! pln end
:царь_недоволен pln pln Как вернулся ты к царю ни с чем- сразу начал он кудесить, и тебя хотел pln повесить... Но немного погодя, пощадить решил тебя. pln btn развилка, опять отправиться в путь end
Отправлено: 19.01.09 17:27. Заголовок: про коня на шахматно..
про коня на шахматном поле ты лихо загнул! сделать, что ли? а пример длиной 144 строчки! проще ничего не смог придумать? и про переменные ни фига не объяснил: что это такое, как их объявлять, операторы if..then и goto. щазз ещё и глюков наловлю
Уймись, noname- некогда мне. Потом объясню. ОБЪЯВЛЕНИЕ для гостей этой темы: любые вопросы по URQL приветствуются! Бываю на форуме редко. Но не реже, чем раз в неделю.
дорогой, elmortem. единые стандарты языка сформированы очень давно. но, дело urql не стоит на месте! так, например, автор акурки пошёл альтернативным путём, и хотя он таки и 'не дошёл' до логического конца, которым мог бы стать безбажный релиз, но было сделано очень многое. так же в файрурке, наряду с поддержкой стандарта urql добавлены новые возможности. развитие языка- общепринятая практика. добавлю, что на последней версии досурки, рекомендованной в этой теме выше, идут все квесты, написанные под любую версию досурки. конкурент урки не может этим похвастаться- не все скачанные с их сайта старые файлы примеров идут под новую версию. ИМХО- в любом случае, развитие необходимо, даже если ради него приходится отступать от стандартов.
одной из особенностей урки является сравнительная многочисленность пишущихся под неё игр. и авторы часто выбирают альтернативные недоработанные версии, вместо стандартной досурки. чтож, - их право! и это никоим образом не умаляет достоинств urql. так же, как если б кто-то, взяв куспелевские исходники, создал бы альтернативный акусп, то это ни в коей мере не умалило бы достоинств куспа.
да, и напоминаю об одной особенности выкладываемых в сообщениях темы текстов: несколько пробелов подряд заменяются одним. так что, если при запуске примера в текстах описания кое-где не сделаны отступы в начале строки- не автора вина. если кто знает, как помочь этой проблеме- буду благодарен.
Отправлено: 19.01.09 22:33. Заголовок: наиболее удобоваримо..
цитата:
наиболее удобоваримое описание стандарта URQL
Какая противоречива строка. Стандарты либо есть, либо нет. Тогда каждый кроит их по своему. Примерно похожая ситуация сейчас с HTML/CSS/JavaScript. Каждый браузер кроит стандарты по своему. Так что на вопрос вы мой не ответили, сроков выхода стандартов не написали.
Ситуация такова: стандарт есть. Текста с названием 'стандарт URQL' нет. Есть досурка, признанная в качестве стандарта, на которую принято ровняться.
цитата:
наиболее удобоваримое описание стандарта URQL
Описаний чего угодно может быть множество, и они могут различаться. Так например, у меня были разные книги с описанием C++ от разных авторов: один из них начинал с описания структурной схемы языка, и вставлял скриншоты, другой- вставлял цитаты из Кэролла, и стремился сделать описание языка удобочитаемым.
Впрочем, возможно, и составлю когда-нибудь текст 'стандарт URQL', и тогда urql станет первой РИЛ-ориентированной платформой, имеющей 'стандарт'. Но можешь и ты это сделать. Упомянутое выше описание может в этом помочь. Будут сложности- спрашивай. Желаю удачи!
---
цитата:
про переменные ни фига не объяснил: что это такое, как их объявлять, операторы if..then и goto. щазз ещё и глюков наловлю
Ответ для noname, и всех интересующихся: За дебагинг буду благодарен. А теперь, объясню, как смогу:
Что такое переменные? Ну, кто не разберётся- пусть спросит. Тогда и подумаю, как объяснить. Никакого специального объявления переменных в URQL не требуется. Но для удобства я их объявляю в начале игры:
цитата:
:инициализация на_коне = 1 волшебный_меч = 0 принцесс_спасено = 0 узнал_секрет = 0 goto начало end
Если значение переменной специально не задано, то оно равно нулю. В данном примере показан пример числовых переменных(в языках Си и Паскаль такой тип принято называть вещественным)- это могут быть как положительные, так и отрицательные, как дробные, так и целые числа. В одном из следующих примеров будут показаны и строковые переменные.
:инициализация на_коне = 1 волшебный_меч = 0 принцесс_спасено = 0 узнал_секрет = 0 goto начало end
goto- оператор безусловного перехода. Применяется: goto локация. По этой команде выполнение программы продолжится в локации локация. В нашем примере мы переходим к локации с именем начало. В дальнейших примерах будет рассмотрена возможность переходить в любое место программы, а не только на начало локации.
Переменные создаются для активного влияния на ход игры. Чтобы реализовать эту возможность, существует оператор условия: If Условие then Действия Если выполняется Условие, то производятся Действия. А если нет, то- нет.
цитата:
pln if на_коне=1 then pln Долго ли, коротко ли ты ехал, да прискакал к горюч-камню, у которого дорога if на_коне=0 then pln Долго ли, коротко ли ты шёл, да пришёл к горюч-камню, у которого дорога pln надвое разбегается. А на камне том надпись выбита:
В данном отрывке примера от того, есть ли конь у нашего героя, зависит текст выводимого сообщения. Информация о том, есть ли у него конь, хранится в переменной на_коне. В ситуации, когда герой теряет коня, автор игры должен позаботиться о том, что бы переменная отображала изменения ситуации:
цитата:
pln - Это всё. - сказал вмиг помолодевший Мамез, и умчался. pln pln На дороге остался клочок какой-то тряпки. pln на_коне=0
В дальнейших примерах мы не раз ещё вернёмся к оператору if..then.. и его возможностям.
---
Фу-ух! Неужели это всё? До встречи через неделю!
p.s. Эх, я-то ожидал, что скрытые тексты будут "открываться" не зависимо друг от друга... p.p.s. И ещё о шахматах: когда-то давно, Victor написал интересную прогу qwerty-bench на досурке. Хорошо бы её найти...
UPD
С удовольствием даю ссылку на http://www.vkoranov.newmail.ru/ Помимо прочего, там можно найти и qwerty-bench-vic, сделанный по моей просьбе Виктором для демонстрации работы с массивами.
qwerty Стандарт, который нигде не зафксирован - миф. Досурка не может быть стандартом пока существуют и поддерживаются квестописателями другие интерпретаторы. И не нужно путать "описание чего-либо" и "описание стандарта чего-либо". В случае с С++ есть описание стандарта С++ от его автора Страуструпа, все остальные описания основаны на этом стандарте, оталкиваются от него и не вносят в него изменения. Стандарты URQL нужны не мне, а вам. Если вы этого не понимаете - мне всё равно. Можете и дальше агонизировать...
upd: Арвагравия... P.S. Грязную провокацию нонейма оставляю без внимания...
Помогите, пожалуйста! Пыталась сделать все, как было написано в уроках. Однако когда попыталась сделать inv_Вампирья стрела=15 все последующие предметы, дописаные как Inv_ или даже inv+ в инвентаре выбиваются тоже как 15! Я уже просто не знаю что делать. Может, кто-то сумеет подсказать в чем дело?.. Заранее спасибо.
Ехидна, Во-первых было бы интересно глянуть на код. Возможно, дело не в одной этой строчке. (Хотя вряд ли. Наверное, всё-таки в этой) Во-вторых... в данный момент исследую этот вопрос- ждите ответа...
UPD
цитата:
Есть прекрасные сложные квесты, состоящие только из локаций и переходов, но, как правило, создатели квестов предпочитают еще и добавлять в игру предметы, заставляя играющих активно работать с ними. При грамотном использовании этой возможности можно значительно разнообразить игровой процесс, есть интересные квесты, которые построены исключительно на манипулировании предметами.
цитата:
Inv+ [Количество,]ПредметПосле выполнения этого оператора игроку дается Количество (1 по умолчанию) предметов Предмет. Можно прибавить и отрицательное количество предметов - это все равно, что вычесть их из инвентаря. Помните только, что число предматов в инвентаре не может быть меньше нуля - если количество предметов инвентаря после выполнения оператора меньше либо равно нуля, тогда соответствующий предмет из инвентаря убирается.
например: inv+ Кирпич или: inv+ 10,Рублей
Исследование завершено. Готов выложить пример программы, работающей с Вампирьими стрелами, и не затрагивающей кол-во листков подорожника. Но для начала выскажу рекомендацию: - Хорошо бы избегать по-возможности пробелов в названиях предметов. Например писать Вампирьих_стрел вместо Вампирьих стрел. Либо придумать вампирьим стрелам уникальное название: кровострелы.
Давно ходил слух, что при пробелах в названии предметов происходит что-то не то. В данный момент продолжаю попытки нащупать проблему. Вот пример программы:
:10 pln pln Допустим, у героя УЖЕ есть изначально 10 Вампирьих стрел pln И тридцать три листка подорожника (залечивать раны) pln Проверьте работу программы, пользуясь клавишей 'i' для показа инвентаря: pln Кол-во листков подорожника должно оставаться неизменным! pln inv +33,листка подорожника inv +10,Вампирьих стрел btn 20, купить ещё 5 стрел btn 30, продать 5 стрел btn 40, произнести жуткое заклинание 15-ти end :20 inv +5, Вампирьих стрел pln pln Денег у героя- куры не клюют. Теперь у него на 5-ть стрел больше. pln btn 20, купить ещё 5 стрел btn 30, продать 5 стрел btn 40, произнести жуткое заклинание 15-ти end :30 if inv_Вампирьих стрел < 5 then goto 50 inv -5, Вампирьих стрел pln pln Теперь у нашего героя на 5-ть стрел меньше. pln btn 20, купить ещё 5 стрел btn 30, продать 5 стрел btn 40, произнести жуткое заклинание 15-ти end :40 inv_Вампирьих стрел = 15 pln pln Теперь у нашего героя ровно 15-ть стрел. pln btn 20, купить ещё 5 стрел btn 30, продать 5 стрел btn 40, произнести жуткое заклинание 15-ти end :50 pln pln У нашего героя нет столько стрел для продажи! pln btn 20, купить ещё 5 стрел btn 30, продать 5 стрел btn 40, произнести жуткое заклинание 15-ти end
Отправлено: 24.01.09 20:29. Заголовок: qwerty Вот код. :С..
qwerty Вот код. :Системное inv_Клановый меч=1 inv_Костяной лук=1 inv_Вампирья стрела=15 goto Начало end
Затем по сюжету персонаж может выстрелить в человека - следовательно, стрела отнимается... :Выстрел inv- Вампирья Стрела if 1 Вампирья Стрела then invkill Вампирья Стрела btn Обыск, Обыскать тело. end
:Обыск inv_Металлический браслет=1 pln Больше здесь просто было нечего делать. btn Уйти, Вы уходите. end
Вот... (текст я вырезаю, он же ненужен, нэ?.. Но если нужен, могу бросить полностью... просто там лирики много)
ОПС! обратил внимание на: "...все последующие предметы, дописаные как ..." Переставил операторы местами: inv +10,Вампирьих стрел inv +33,листка подорожника И всё равно жуткое заклинание 15-ти сработало нормально. Впрочем, может в таком варианте проглючит какая-нибудь последовательность действий? Щаззз опробую Ваш код
UPD
Вы пользуетесь urq_dos.exe, скачанной по ссылке в этой теме?
UPD
Да, проблема обнаружена: Ваш код действительно не работает. Слухи о нежелательности пробелов в названиях предметов пока не подтвердились. Щазз готовлю исправленную версию Вашего кода.
Все даты в формате GMT
3 час. Хитов сегодня: 423
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет