ZX Spectrum
Game

Venturespeak

ZX Computing (Великобритания),

Автор:

Жанр: Программы и утилиты


Доступные версии

 Неофициальное издание
Играть!

Язык

  • Русский
  • English

Управление

  • Клавиатура(?)

Игроков

  • Один
  • Описание
  • Описание (авт.пер.)
  • Информация

VENTURESPEAK

ZX Computing, октябрь, ноябрь и декабрь 1986

Часть 1: октябрь 1986

Алан Дэвис, недавно вернулся из Царства взаимодействия,

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

Часто говорят, что качество игры приключения преимущественно

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

Все это верно, но, конечно, есть пределы Это в равной степени можно для приключений, чтобы быть удивительно богатым воображением в концепции, но оказана почти невозможно играть по непомерно длинными времени отклика, потертый на экране презентация, или само “недружелюбие”.

Это не трудно найти примеры этой второй категории даже среди

Недавние коммерческие приключения: гротеск “Властелин колец” происходит Наиболее легко на ум, с его мучительно медленные ответы сочетании для ввода клавиатура рутины которого медлительность делает точную въезд команды больное испытание терпения. Или как насчет тех орды Quilled приключения, в основном быстрые в ответ, но так часто страдающие от стереотипные представления, недружелюбно лексики и жесткая ограничение стандартного “глагола / существительное” требование ввода.

Столкнувшись с такой ситуацией, BASIC программист с иене писать

приключения вполне может быть отложено на хорошее. Даже если он выбирает простой формат “глагол / существительное” вход, потребность в большой, дружелюбный словарный запас обязательно предполагает длительные задержки в ответ, когда Программа декодирует ввод игрока и сканирует списки словарный запас. Даже тогда, если это ограничение будет принято, есть много случаев, когда “глагол / существительное” тип командной анализатора является недостаточным – для Факт остается фактом, что вы просто не можете написать интерактивный “Хоббит” стиле приключение без какой способности к работе с более сложными команды.

Мгновенный ответ

Очевидным решением проблемы является прибегнуть к машинный код

программирование для того, чтобы иметь дело с аспектами команда анализа приключенческая письма, так как это имеет много преимуществ. Во-первых, программа Ответы могут быть практически мгновенным, независимо от размера словаря. Во-вторых, сложные и несколько команд (например. PUT драгоценный камень в груди И выйти из комнаты) можно иметь дело, снова на безвозмездной основе в ответ Время. И, наконец, дополнительные средства могут быть включены в Команда анализатор разрешить, скажем, подробные средства редактирования в улучшить “дружелюбие”, или возможность работы “в реальном времени” в завершено приключение, если требуется.

Такое решение, в свою очередь поднимает свои трудности – не в последнюю очередь, что

сопряжения подпрограмм в коде машины с остальными преимущественно BASIC программа. Мы также должны столкнуться с проблемой (Предпочтительно) написание кода, который предлагает достаточную гибкость для нас использовать его для любых приключений мы можем заботиться, чтобы написать. Это, в двух словах, это что система командной анализ Venturespeak был разработан для.

Даже если у вас нет понимания машинного кода программирования, вы можете использовать Venturespeak себя писать сложные приключения которых сохранить гибкость и простоту BASIC, еще которые в основном бесплатно от его ограничений скорости.

Venturespeak существу состоит из одного «пакета», который может быть удобно разделен на 3 части следующим образом:

1) вход рутина клавиатура, которая допускает печатный команд до 63

   символов, в комплекте с одиночными клавиатуры объектов прессы для    удаление / команды редактирования, и вариант в реальном времени.

2) процедура Parser, который декодирует сложные команды, содержащие до    три глагола и четыре существительных, например, “ASK SAM поставить монету в    Кошелек “, а также позволяет несколько команд, которые будут соединять,    в последовательности, используя запятые, торможений или «И».

3) на основе меню Venturespeak редактор, который предлагает комплексное и    легкие в использовании средства для добавления, удаления или изменения лексики.    Он способен генерировать единый блок кода, который включает    как клавиатура и подпрограммы анализа вместе с лексикой, необходимой    для какой-либо конкретной приключений.

Сборные пункты

В этом месяце мы будем иметь дело с рутиной ввода, а другой

аспекты Venturespeak будет решаться в последующие статьи, но прежде чем мы начнем, я хотел бы сделать сильную рекомендацию, что вам одеть себя с достойной программы ассемблера (если вы не один уже). Можно ткнуть в подпрограммах машинного кода из основной из Конечно – и я приведу десятичных свалки для тех, кто хочет сделать это – но мы будем иметь дело с более 1K машинного кода в целом, и возможности для ошибок при наборе текста в длинных списках чисел Значительное, даже с контрольными суммами. Сборщик хорошо стоит инвестиции – я использую Hisoft в “DEVPAC” и найти его превосходным.

Теперь, когда закусок вне пути, мы можем получить с

основное блюдо в этом месяце. Перед тем, как начать, Очистить Тип 59999 снизить RAMTOP так что наш код можно безопасно хранить в адрес 60000 и выше. Кстати, я выбрал этот адрес, чтобы Venturespeak Процедуры будут совместимы с теми, от предыдущих «Миры Серия Взаимодействие “, вы должны желать, чтобы объединить их. (Код не перемещаемый).

Листинг 1 дает программу на языке ассемблера для ввода с клавиатуры

рутина. Код организован по адресу 60000, и является 391 байт долго. Для тех assemblerless лиц, листинг 2 обеспечивает (В десятичной системе) байт вам нужно совместно с основной загрузчик данной в листинге 3. Тип в листинге 3, а затем запустить. Просто следуйте инструкциям Программа дает вам, введя отдельных байтов из листинга 2 по одному за раз, в том числе контрольной суммы после каждого пятого байта. Если ошибка найдена, программа попросит вас ввести всю оскорбления линия 5 байт снова. Изображение на экране, который накапливается должны быть одинаковыми для компоновки листинге 2, и это должно помочь проверить все, как вы идете вперед. После того, как все это было вошел без ошибок, программа сохранит свой код на ленту как “КЛАВИАТУРА” КОД 60000.391.

Что же в таком случае эта процедура действительно, когда вы вызываете его с Пусть M = USR

60000? Ну, в принципе он печатает небольшой “быстрое” символ внизу экрана и ждет вас, чтобы начать набирать команду. Каждый набранный символ хранится в виде одного байта выше RAMTOP, байт хранятся последовательно от адреса 60318 (СНВ) и далее до Максимум 63 символов. Когда вы, наконец, нажмите клавишу ВВОД, рутину делает немедленный возврат к основным, с общей протяженностью вашей машинке Команда провела по адресу 60315 (COUNT). Все это затем готов к анализатор (что, конечно, мы пока не имеем), чтобы взять на себя и анализировать ваша команда. Тем не менее, это ни в коем случае не все, что процедура может сделать для тебя. Следующие услуги доступны:

1) CAPS SHIFT / 0 акты так же, как в обычном спектре “DELETE” ключ,

   стирая последний введенный символ.

2) CAPS SHIFT / 1 удаляет все, что вы набрали до сих пор.

3) CAPS SHIFT / 2 позволяет вспомнить всю последней команды    Вы вошли, либо так, что вы можете ввести его снова без изменений, или для    редактирования с помощью клавиши «Delete».

Нулевое время

Процедура также имеет встроенный в реальном времени механизм, который работает как

следующим образом: если ничего не было введено, то примерно через 10 секунд возврат к основным происходит с адресной 60383 (TIME), содержащей значение нулю. Если, с другой стороны это возвращение к BASIC произошло из-за Игрок ввода команды, адрес 60383 содержит значение 1. Этот означает, что на выходе из рутины мы можем проверить PEEK 60383, и выполнить соответствующие подпрограммы (сказать самодеятельностью знаков), если что ячейка памяти содержит нуль. Если, с другой стороны рука содержит значение 1, мы знаем, что анализ команда должна быть осуществляется в первую очередь.

Если вы не хотите, чтобы ваш приключение для работы в режиме реального времени, эта функция может

быть подавлены путем внесения изменений в код со следующими тычет: POKE 60033,0: POKE 60034,0: POKE 60035,0 (Вы, возможно, хотели бы сохранить два версии кода – один с реальным временем, и один без).

С другой стороны, если вы хотите сохранить функцию в режиме реального времени, но замедлить темпы вещей, попробуйте тыкать разные значения в 60032. мешке 60032,4 даст выход на BASIC каждые 20 секунд или около того, например.

Тем не менее, пытаются все эти вещи для себя гораздо больше удовольствия, чем

читать о них, а в листинге 4 позволит Вам проверить процедуру вне. Первым явным 59999, нагрузка в байтах, тип в линиях BASIC из листинга 4 [файл: keytest], а затем запустить. Когда на экране появится приглашение в нижней части экрана, введите любой старой команды (обратите внимание, что Caps Lock установлен автоматически) и нажмите клавишу ВВОД. Если все хорошо, тем ниже экран будет очистить, и ваша команда будет точно воспроизведена в верхнем экране (Подтверждение того, что он был правильно сохранен в памяти).

Попробуйте нажать CAPS SHIFT / 2, чтобы проверить, что “вспомнить последнюю команду”

Объект работает правильно, и, кроме того, проверьте удаления функции. Понятно, я надеюсь, что выгоды от этих объектов являются: предположим, что ваш последняя команда была “ASK SAM атаковать ORC”, и что на следующем повороте вы хотели бы Сэм бить дневные светы из тролль. Все, что вам нужно сделать, это вспомнить вашу предыдущую команду, используя CS / 2, исключить слово “ORC”, и добавить слово “тролль”, прежде чем нажать ENTER.

Все в порядке? Изысканные. Сделайте себе заслуженную чашку кофе, для вас сейчас

есть около трети всей системы Venturespeak безопасно припрятано на ленте. Увидимся в следующем месяце, с второй партии …

Монтажник Листинг для клавиатуры

60000 3E08 KEYBD LD, 008

60002 326A5C LD (23658), 60005 CDE2EA ЗВОНОК ОЧИСТИТЬ 60008 CD2EEB ЗВОНОК ПОДСКАЖИТЕ 60011 AF СБРОС XOR 60012 32785C LD (23672), 60015 32795C LD (23673), 60018 327A5C LD (23674), 60021 329BEB LD (COUNT), 60024 AF ПОДОЖДИТЕ XOR 60025 32085C LD (23560), 60028 3A795C WAIT2 LD, (23673) 60031 FE02 CP 002 60033 D232EB JP NC, TimeUp 60036 3A085C CONT LD, (23560) 60039 FE00 CP 000 60041 CA7CEA JP Z, WAIT2 60044 FE06 CP 006 60046 CA7BEB JP Z, ПОВТОР 60049 FE0D CP 013 60051 CCFBEA ЗВОНОК Z, CHECKN 60054 FE00 CP 000 60056 CA78EA JP Z, ПОДОЖДИТЕ 60059 FE0C CP 012 60061 CCFBEA ЗВОНОК Z, CHECKN 60064 FE00 CP 000 60066 CA78EA JP Z, ПОДОЖДИТЕ 60069 FE7B CP 123 60071 D278EA JP NC, ПОДОЖДИТЕ 60074 329DEB LD (CHR), 60077 FE0D CP 013 60079 CA0AEB JP Z, ENTER 60082 FE0C CP 012 60084 CA55EB JP Z, DELETE 60087 3A9DEB LD, (CHR) 60090 FE07 CP 007 60092 CA19EB JP Z, WIPE 60095 FE20 CP 032 60097 DA78EA JP C, ПОДОЖДИТЕ 60100 3A9BEB LD, (COUNT) 60103 FE3F CP 063 60105 CA78EA JP Z, ПОДОЖДИТЕ 60108 219EEB LD HL, СНВ 60111 1600 LD D, 000 60113 5F LD E, 60114 3A9DEB LD, (CHR) 60117 19 ДОБАВИТЬ HL, DE 60118 77 LD (HL), 60119 13 INC DE 60120 CD3EEB ЗВОНОК CURSOR 60123 7B LD A, E 60124 329BEB LD (COUNT), 60127 C378EA JP ПОДОЖДИТЕ

60130 AF CLEAR, XOR

60131 CD0116 ВЫЗОВ # 1601 60134 CD26EB ЗВОНОК SETPR 60137 0640 LD B, 064 60139 3E20 SCAN LD, 032 60141 C5 PUSH BC 60142 D7 RST # 10 60143 C1 POP BC 60144 5 декабря B 60145 78 LD A, B 60146 FE00 CP 000 60148 C2EBEA JP NZ, SCAN 60151 CD26EB ЗВОНОК SETPR 60154 C9 RET

60155 329DEB CHECKN LD (CHR),

60158 3A9BEB LD, (COUNT) 60161 FE00 CP 000 60163 CA09EB JP Z, RESETA 60166 3A9DEB LD, (CHR) 60169 C9 RESETA RET

60170 CDE2EA ENTER CALL, CLEAR,

60173 3E01 LD, 001 60175 32DFEB LD (TIME), 60178 3A9BEB LD, (COUNT) 60181 329CEB LD (СТ2), 60184 C9 RET

60185 AF WIPE XOR A

60186 329BEB LD (COUNT), 60189 CDE2EA ЗВОНОК ОЧИСТИТЬ 60192 CD2EEB ЗВОНОК ПОДСКАЖИТЕ 60195 C378EA JP ПОДОЖДИТЕ

60198 3E16 SETPR LD, 022

60200 D7 RST # 10 60201 AF XOR 60202 D7 RST # 10 60203 AF XOR 60204 D7 RST # 10 60205 C9 RET

60206 3E3E ПОДСКАЖИТЕ LD, 062

60208 D7 RST # 10 60209 C9 RET

60210 3A9BEB TimeUp LD, (COUNT) 60213 FE00 CP 000 60215 C284EA JP NZ, CONT 60218 CDE0EB ЗВОНОК ВЫЙТИ 60221 C9 RET

60222 D5 CURSOR PUSH DE

60223 3E11 LD, 017 60225 D7 RST # 10 60226 3E06 LD, 006 60228 D7 RST # 10 60229 3A9DEB LD, (CHR) 60232 D7 RST # 10 60233 D1 POP DE 60234 C9 RET

60235 3E11 ПРОСТРАНСТВО LD, 017

60237 D7 RST # 10 60238 3E07 LD, 007 60240 D7 RST # 10 60241 3E20 LD, 032 60243 D7 RST # 10 60244 C9 RET

60245 3A9BEB DELETE LD A, (COUNT)

60248 FE1F CP 031 60250 CA70EB JP Z, TLINE 60253 3E08 LD, 008 60255 D7 RST # 10 60256 CD4BEB ЗДЕСЬ ЗВОНИТЕ ПРОСТРАНСТВО 60259 3E08 LD, 008 60261 D7 RST # 10 60262 3A9BEB LD, (COUNT) 60265 3D декабря 60266 329BEB LD (COUNT), 60269 C378EA JP ПОДОЖДИТЕ

60272 3E16 TLINE LD, 022

60274 D7 RST # 10 60275 AF XOR 60276 D7 RST # 10 60277 3E1F LD, 031 60279 D7 RST # 10 60280 C360EB JP ЗДЕСЬ

60283 3A9BEB ПОВТОР LD, (COUNT)

60286 FE00 CP 000 60288 C278EA JP NZ, ПОДОЖДИТЕ 60291 CDE2EA ЗВОНОК ОЧИСТИТЬ 60294 CD2EEB ЗВОНОК ПОДСКАЖИТЕ 60297 119EEB LD DE, СНВ 60300 3A9CEB LD, (СТ2) 60303 329BEB LD (COUNT), 60306 0600 LD B, 000 60308 4F LD C, 60309 CD3C20 ВЫЗОВ # 203C 60312 C378EA JP ПОДОЖДИТЕ

60315 00 COUNT DEFB 0

60316 00 СТ2 DEFB 0 60317 00 CHR DEFB 0 60318 .. START DEFS 65 60383 00 ВРЕМЯ DEFB 0

60384 32DFEB ВЫЙТИ LD (время), A

60387 CDE2EA ЗВОНОК ОЧИСТИТЬ 60390 C9 RET

– – – – –

Часть 2: Ноябрь 1986

Часть 2: приключения серии Алана Дэвиса смотрит на командной анализа.

В этом месяце приносит вам вторую часть VENTURESPEAK машинного кода

Программа, и мы будем взглянуть на нежной искусства “разбор вход “- или” анализ команда “, если вы предпочитаете.

Вы будете нуждаться в машинный код рутину клавиатуры, сохраненный

в прошлом месяце, как мы должны исправить программу в этом месяце на него, чтобы производства одного блока кода. В листинге 1 ассемблере Программа для “парсер” – это программа, которая будет сканировать через набрали вход, проверяя слова против набора лексики данных. Как Вы можете видеть, что это довольно длительный рутина так ассемблера сделает безошибочной записи значительно легче – но если у вас нет сборщик не все потеряно, так как я дал десятичную дамп кода в листинге 2. Все, что вам нужно сделать, это ввести в листинге 3, запустить его, и введите цифры от листинге 2, чтобы, в том числе контрольные суммы после каждого пятого байта. Возьмите вещи медленно, проверяя экран против листинга, как вы идете вперед, и все должно быть хорошо. Когда вы закончите, программа сохранит код на ленту для Вы, как “парсер” CODE 60400.750.

Разбор

Пока все идет хорошо, мы теперь должны сварить разделы клавиатуры и анализатора

вместе следующим образом:

1) Сброс Спектрум помощью RANDOMIZE USR 0.

  • 2) Введите CLEAR, 59999 как непосредственным командованием.
  • 3) Нагрузка в коде клавиатуры вы сохранили в прошлом месяце (LOAD “КЛАВИАТУРА” КОД). 4) Нагрузка в этом месяце анализатора кода (LOAD “PARSER” CODE).
  • 5) Теперь сохраните всю партию в виде единого блока с    SAVE “V-ГОВОРЯТ” КОД 60000,1150 – и не держать его в безопасности где-то до    в следующем месяце.

В дополнение к этому один блок кода, это, наверное, целесообразно сохранить

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

Конечно, вы будете желать, чтобы знать, что это за новое подпрограмма выполняет,

и проверить его. Мы будем, конечно, глядя на то, как он работает в этом статья, но как для тестирования его – ну, я попрошу вас быть пациенту и не ждать до следующего месяца. Вы видите, проблема в том, что наш анализатор на самом деле довольно бесполезно в настоящее, потому что это еще не обладают словарный запас! (Скорее, как парень, который, хотя и весьма умный, не имеет базовые знания, чтобы привлечь на …) положить лексики в парсер мы нуждаемся в VENTURESPEAK редактор – и вот наша задача на следующий месяц. Рисунок 1. Словарь список, с каждого глагола, существительное и объект индивидуально пронумерованы.

          ГЛАГОЛЫ D 10 SHI 5                   DOW 10 ARM 6 ГОВОРЯТ 1 DES 10 BOO 7 TEL 1 GET 11 CHE 8 ASK 1 TAK 11 BOX 9 TAL 1 ПИК 11 DOO 10 L 2 УЦИ 12 ЛОО 2 PUT 12 N 3 EXA 13 человек NOR 3 REA 13 S 4 GIV 14 SAM 1 СУ 4 OFF 14 FRE 2 E 5 фиг.15 ПЭТ 3 EAS 5 КИЛ 15 JOH 4 W 6 ATT 15 JAC 5 WES 6 HIT 15 JOE 6 В 7 ЛОР 7 OUT 8 ОБЪЕКТЫ LEA 8 U 9 ​​SWO 1 UP 9 DAG 2 CLI 9 SPE 3

ASC 9 KNI 4

Для настоящего, хотя, я собираюсь объяснить основные принципы

лежащий в основе разбора систему так, чтобы, когда придет время для вас, чтобы использовать его вы будете знакомы со всеми основными функциями, мы не можем обсуждать это в вакууме, так на рисунке 1, я дал очень элементарный словарь слов, которые вы могли бы ожидать, чтобы найти в типичный приключения (распечатать из программы-редактора, в самом деле). Рисунок 1 Сам поднимает несколько пунктов, которые должны быть упомянуты прежде чем мы пойдем далее:

1) Только первые три буквы любого слова значимы. Это может

   иногда привести к некоторой путанице, поскольку анализатор не может    различать такие слова, как “Ворон” или “овраг”, хотя в    практика Я никогда не нашел, что это серьезная проблема, самостоятельно. (Мои    Игра “Runestone” использует только три буквы разбор).

2) Словарь разделен на три группы: глаголы, объектов и

   ЛЮДИ. Это имеет преимущества по сравнению с обычным простым разделения на    Глаголов и существительных, потому что это помогает процессу ошибок улавливания, когда вы    написать свое приключение, как вы увидите позже.

3) Каждый элемент словаря присваивается номер от 1 до 254

   включительно. Синонимы обслужены путем присвоения и тот же номер    разные слова, так что глаголы СКАЗАТЬ, СКАЖИТЕ, ASK, и говорить, для    пример, все присвоен номер 1. Это хорошее место, чтобы сделать    ВАЖНО: как правило, вы можете назначить любой номер в любой    глагол вам нравится, но это необходимо, чтобы все ГЛАГОЛЫ подразумевая речь будет    Присвоен номер 1, если процедура парсер, чтобы работать правильно.

Вход

На практике то, что происходит будет что-то вроде этого. Ваш BASIC

приключение программа будет приглашать вход с плеера, вызвав Клавиатура рутинные: Пусть M = USR 60000. Игрок затем типы в его Команда, прессы ENTER, когда он закончил, и программа возвращается к BASIC, на котором хранятся вход проигрывателя в виде строки из байтов в правильные адреса выше RAMTOP. Теперь мы хотим анализатор для сканирования это хранятся команды и расшифровать его, так что следующий шаг заключается в вызове парсер подпрограмма с Пусть M = USR 60400. Анализатор сейчас просматривает Команда игрока, символ за символом, проверяя слова он находит против тех, кто в своей лексике, игнорируя любые слова он не распознавать и пропускать к следующему. Это в конечном итоге останавливается, либо когда он достигает конца, или когда он достигает запятую, точку, или Слово «И» (эти последние элементы, означающее, что игрок набрал в несколько команд на одном дыхании) и возвращается к основной.

Анализатор сделав свою работу (практически мгновенно, конечно), мы

нужно извлечь плоды своих трудов по выглядывает уверен адреса. Это делает для более легкой жизни, если результаты этих выглядывает немедленно назначаются основных переменных с соответствующим Память-бег имена, как это: ПУСТЬ ГОВОРЯТ = PEEK 61124 ПУСТЬ ЧЕЛ = PEEK 61125

ПУСТЬ VB1 = PEEK 61126
ПУСТЬ VB2 = PEEK 61127
ПУСТЬ FK1 = PEEK 61129
ПУСТЬ OB1 = PEEK 61131
ПУСТЬ OB2 = PEEK 61132

Пусть больше = PEEK 61123

Что это все составляет в том, что вы можете извлечь из какой-либо одной команде

кодовые номера на срок до трех глаголов, двух объектов, и двух человек – так что ваша основная программа может выполнить необходимое условие тесты уместно вашем приключении. Несколько примеров следует сделать вещи ясно. Рисунок 2. Примеры командной анализа                                  EXAMINE кинжал положить книгу в грудь                                               C                                       КОМАНДА АНАЛИЗ УПРАВЛЕНИЯ АНАЛИЗ                                                                        СКАЖИТЕ: 0 рассказать: 0      PERS: 0 чел: 0                                       VB1: 13 VB1: 12      VB2: 0 VB2: 7                                       FK1: 0 FK1: 0                                       OB1: 2 OB1: 7      OB2: 0 OB2: 8                                                                                                    ГОВОРЯТ Фреду “EXAMINE кинжал” ASK ПИТЕР ДАТЬ нож J                                 OHN              B D                                       КОМАНДА АНАЛИЗ УПРАВЛЕНИЯ АНАЛИЗ                                                                        СКАЖИТЕ: 1 сказать: 1      PERS: 2 чел: 3                                       VB1: 13 VB1: 14      VB2: 0 VB2: 0                                       FK1: 0 FK1: 4                                       OB1: 2 OB1: 4      OB2: 0 OB2: 0                                 

                                

Изучение

На рисунке 2 приведены примеры анализа диапазона команд

с участием основную лексику рисунке 1. (Вы хотели бы знать что эти цифры все экранные свалки от VENTURESPEAK РЕДАКТОРА в режиме “тест”). Начнем с первого и простейшего команды – 2 (а): “Исследуйте КИНЖАЛ”. Только два слова действительно актуальны здесь – глагол “EXAMINE”, и существительное (в данном случае объект) “DAGGER”.

Вы увидите на примере, что парсер присваивается значение 13, чтобы VB1, 2 в OB1, и ноль на все остальное. Теперь посмотрите на Список лексики на рисунке 1, где вы найдете, что глагол число 13 является “EXA” (для “исследовать”), и этот объект номер 2 “ДАГ” (для “Кинжал”). Имеет смысл? ОК, тогда давайте попробуем что-то немного более Комплекс.

Второй пример, на фиг.2 (б), показывает анализ команды

“Скажи FRED” EXAMINE кинжал “” и мы находим VB1 и OB1 назначается точно такие же значения, как раньше (как мы ожидали бы), но посмотрите: на этот раз переменная TELL принимает значение 1I (означающее речь) и Переменная PERS присваивается значение 2 (число для Фреда), соответствующий на человека решается. Примечание которые говорят на самом деле только флаг которая принимает значение 1 или 0 в зависимости от означается ли речь или нет; это переменные PERS, который передает информацию о которых игрок пытается говорить с.

Так почему же нам нужны дополнительные переменные по VB2 и OB2? Ну, иногда

Команды могут включать два объекта – и могут быть случаи, когда вы хотят, чтобы различать два слегка различных видов действий, такие, как введение объектов на или в других субъектах. На рисунке 2 (с) показывает Анализ команды “положить книгу в грудь”. Посмотрите, как эти два глаголы “PUT” (12) и “IN” (7) подобраны здесь, вместе с два объекта в порядке: “Книга” (7) и “Синий” (8).

В последнем примере, 2 (г) относится к типу, в котором речь одному человеку

включает в себя какие-то действия с еще одним человеком. И так Команда “ASK ПИТЕР дать НОЖ Иоанну” устанавливает флаг речи (Сказать), и устанавливает PERS 3 («Питер»). Как мы и ожидали, VB1 14 (“ДАЙ”) и OB 1 4 (“НОЖ”), но в дополнение к этому, FK1 имеет взял другими лицами, участвующими в сделке (“JOHN” = 4). Нам см здесь, кстати, как разделение существительных в людей и ОБЪЕКТЫ облегчает процесс проверки ошибок, необходимую в каждом приключении. Если Команда находится содержать глагол, например, «дать» или «борьба» (где какой-либо другой человек должен по необходимости быть указан), она может быть отклонена как неприемлемое вступления без дальнейшего расследования, если FK1 равна нулю. Пример 2 (г) также иллюстрирует существенное удобство VENTURESPEAK, особенно там, где команды речевые обеспокоены. Это вопросы ни на йоту не какой стиль запись используется игроком – СКАЗАТЬ ПИТЕР “ДАЙТЕ Джон нож”, например, будут расшифрованы с полным Успех анализатором.

Я не упомянул, как система справляется с несколькими командами еще.

Предположим, команда GET меч и идти на север был введен.

анализатор будет анализировать первую часть (GET меча), а затем вернуться к BASIC, но он будет помнить, как далеко по команде он сканировал.

Если мы позволим БОЛЬШЕ = PEEK 61123 (см выше), переменная БОЛЬШЕ будут присваивается значение 1 – говорят нам в том, что другая часть Команда еще предстоит проанализировать. (Для разовых команд БОЛЬШЕ будут ноль). Это означает, что мы можем организовать для первой команды должны быть обработаны соответствующим BASIC подпрограммы, а затем проверить переменная больше, см должен ли другой анализ следовать, или возвращение к управление с клавиатуры вызывается для. Тем не менее, точка повторного входа в подпрограмма анализатор отличается должны продолжением анализа будет необходимо – в таких случаях анализатор называется с Пусть M = USR 60426. (Это потому, что обычный вход в USR 60000 включает в себя уборка планом процесс, который приведет к парсер “забыть” позиционировать она достигла на своей предыдущей проверки).

Типичный программирование “блок-схема”, поэтому, будет что-то вроде этого:

(1) ЗВОНОК КЛАВИАТУРА РЕГЛАМЕНТНОЕ (USR 60000)

(2) ЗВОНОК PARSER РЕГЛАМЕНТНОЕ (USR 60400) (3) КОМАНДА ПРОЦЕСС В BASIC (4), если больше то пусть M = USR 60426: GOTO (3) (5) ВЕРНУТЬСЯ К (1)

Я надеюсь, что теперь вы начали, чтобы получить некоторое представление, в принципе,

что VENTURESPEAK можете сделать для своего приключенческого письменной форме. Если вы горите для некоторых “практический” опыт, не волнуйтесь. Вы сможете опробовать все эти примеры (и, как многие другие, как хотите) себя с помощь программы РЕДАКТОРА в следующий раз, когда я буду также будет предлагать более подробные разъяснения, как включить систему в свой собственный программы, До тех пор …

Монтажник Листинг на PARSER

60400 219EEB INIT LD HL, СНВ

60403 22BEEE LD (NCOM), HL 60406 22C0EE LD (PTR), HL 60409 3A9BEB LD, (COUNT) 60412 5F LD E, 60413 1600 LD D, 000 60415 19 ДОБАВИТЬ HL, DE 60416 3EFF LD, 255 60418 77 LD (HL), 60419 AF XOR 60420 32C4EE LD (сказать), 60423 32C5EE LD (статистика), 60426 AF RESTRT XOR

60427 32C6EE LD (VB1),
60430 32C7EE LD (VB2),
60433 32C8EE LD (VB3),
60436 32C9EE LD (FK1),
60439 32CAEE LD (FK2),
60442 32CBEE LD (OB 1),
60445 32CCEE LD (OB2),

60448 CD74EC ЗВОНОК COMMA 60451 2AC0EE LOOP8 LD HL, (PTR) 60454 AF XOR 60455 32DAEE LD (EXTR), 60458 CD9AEC Call Filter 60461 3ADAEE LD, (EXTR) 60464 FE01 CP 001 60466 CA4FEC JP Z, СНП 60469 2AC0EE LD HL, (PTR) 60472 7E LD, (HL) 60473 FEFF CP 255 60475 CA4FEC JP Z, СНП 60478 FE2C CP 044 60480 CA4BEC JP Z, END 60483 FE2E CP 046 60485 CA4BEC JP Z, END 60488 C323EC JP LOOP8 60491 23 END INC HL 60492 22C0EE LD (PTR), HL 60495 3AC6EE СНП LD, (VB1) 60498 FE01 CP 001 60500 CC58EC ЗВОНОК Z, SWAP 60503 C9 RET

60504 32C4EE SWAP LD (сказать),

60507 3AC7EE LD, (VB2) 60510 32C6EE LD (VB1), 60513 3AC8EE LD, (VB3) 60516 32C7EE LD (VB2), 60519 3AC9EE LD, (FK1) 60522 32C5EE LD (статистика), 60525 3ACAEE LD, (FK2) 60528 32C9EE LD (FK1), 60531 C9 RET

60532 2ABEEE COMMA LD HL, (NCOM)

60535 7E LOOP LD, (HL) 60536 FEFF CP 255 60538 CA95EC JP Z, ENDCOM 60541 FE2C CP 044 60543 CA8BEC JP Z, SETCOM 60546 FE2E CP 046 60548 CA8BEC JP Z, SETCOM 60551 23 INC HL 60552 C377EC JP LOOP 60555 23 SETCOM INC HL 60556 22BEEE LD (NCOM), HL 60559 3E01 LD, 001 60561 32C3EE LD (БОЛЬШЕ), 60564 C9 RET 60565 AF ENDCOM XOR 60566 32C3EE LD (БОЛЬШЕ), 60569 C9 RET

60570 7E ФИЛЬТР LD, (HL)

60571 FE22 CP 034 60573 CCF6EC ЗВОНОК Z, SKIPSP 60576 FE20 CP 032 60578 CCF6EC ЗВОНОК Z, SKIPSP 60581 FE3A CP 058 60583 CCF6EC ЗВОНОК Z, SKIPSP 60586 FEFF CP 255 60588 C8 RET Z 60589 FE2C CP 044 60591 C8 RET Z 60592 FE2E CP 046 60594 C8 RET Z 60595 23 INC HL 60596 7E LD, (HL) 60597 FE20 CP 032 60599 CA0BED JP Z, ОДИН 60602 FE3A CP 058 60604 CA0BED JP Z, ОДИН 60607 FE2C CP 044 60609 CA0BED JP Z, ОДИН 60612 FE2E CP 046 60614 CA0BED JP Z, ОДИН 60617 FE22 CP 034 60619 CA0BED JP Z, ОДИН 60622 FEFF CP 255 60624 CA0BED JP Z, ОДИН 60627 23 INC HL 60628 7E LD, (HL) 60629 FE20 CP 032 60631 CA28ED JP Z, DOUBLE 60634 FE2C CP 044 60636 CA28ED JP Z, DOUBLE 60639 FE2E CP 046 60641 CA28ED JP Z, DOUBLE 60644 FE22 CP 034 60646 CA28ED JP Z, DOUBLE 60649 FE3A CP 058 60651 CA28ED JP Z, DOUBLE 60654 FEFF CP 255 60656 CA28ED JP Z, DOUBLE 60659 C3ACED JP TRIPLE 60662 23 SKIPSP INC HL 60663 7E LD, (HL) 60664 FE20 CP 032 60666 CAF6EC JP Z, SKIPSP 60669 FE22 CP 034 60671 CAF6EC JP Z, SKIPSP 60674 FE3A CP 058 60676 CAF6EC JP Z, SKIPSP 60679 22C0EE LD (PTR), HL 60682 C9 RET

60683 2AC0EE ОДИН LD HL, (PTR)

60686 7E LD, (HL) 60687 CD81ED ЗВОНОК SETPTR 60690 ED5BCDEE LD DE, (VCV1) 60694 47 LD B, 60695 1A LOOP1 LD, (DE) 60696 FEFF CP 255 60698 C8 RET Z 60699 32C2EE LD (TPNO), 60702 13 INC DE 60703 1A LD, (DE) 60704 B8 CP B 60705 CA56ED JP Z, VBFND 60708 13 INC DE 60709 C317ED JP LOOP1

60712 2AC0EE DOUBLE LD HL, (PTR)

60715 7E LD, (HL) 60716 ED5BCFEE LD DE, (VCV2) 60720 47 LD B,

– – – – –

История до сих пор:

Что теперь?

Вы не можете сделать это.

1).

                                

                                             

         

                                                                                                                                                                                                                        

         

                                                                                                                                                                                                                                              

    

                                                                                                                                                                         

                                

                                

                                

Пока все идет хорошо.

То

и 8 кнопок.

Глаголы

Легко, не так ли? Не волнуйся

Когда ты

(Увидеть

Файлы

Время.

ссылка.

Просто

Сама.

подать.

это будет

полезными.

Объекты

и т.д.

Таким образом

удовлетворены.

Для

Игра Venturespeak запускается прямо на сайте. Утилита для программной разработки, изданная в Великобритании в 1986 году творческой группой ZX Computing, которую разработал Alan Davis.

Не запускается или глючит игра, или не можете пройти? Спросите в комментариях.

avatar
  Subscribe  
Уведомлять об
 

Сохранённые игры[X]

  

Справка[X]

Помощь уже в пути!

Не забывайте периодически сохранять игровой прогресс на сервере (клавишей F8), чтобы уверенно продвигаться вперёд!

Если вы гость на сайте, то прогресс будет сохранён только в памяти браузера и потеряется при закрытии. Чтобы этого не произошло - просто войдите в свой профиль.

Для загрузки сохранённой игры жмите F3 или откройте меню "Диск" кнопкой на правой панели.

Если игра не запускается, или у вас есть вопросы по игре - задайте их ниже.

Помощь

Размер

  • x1 [256x192]
  • x2 [512x384]
  • x3 [768x576]
  • Полный

Диск

Кликни в окно эмулятора, чтобы управлять!
<<<<
Close