ZX Format
#06
29 июля 1997 |
|
Игрушки - описание редактора Адевентюр - PAW (часть 1).
The Professional Adventure Writer Техническое руководство music by Jaan (С) 1986 Gilsoft International Ltd. (C) 1996 Alex ASP, перевод _______________________________ Программа: T.J.Gilberts, Y.Yeandle, P.Wade 1Графика: D.Peeke, K.Maddocks и A.Williams Руководство:T.J.Gilberts Текст в Word: P.Contreras Перевод посвящается тем, кто: сначала просто ABеcSилил, затем хлебнул горя с GACом, потом, быть может, QPIлся, и продолжит, уPAW, идти ... I. От переводчика. Что ж, как и полагается, в этой части текста можно будет увидеть целую кучу всякой бредовой и пракитически бесполез- ной информации, касающейся описываемого далее программного продукта, поэтому не- которые вполне спокойно могут пропустить ЭТО, а некоторые могут и совсем не читать все нижеизложенное. Самый первый вопрос, который, навер- ное, возникнет: "А что это за зверь та- кой, и с чем его едят?" Это очередная программа, предназначенная для построения адвентюрных игрушек. Предшественницей ее был пакет QPI, который, похоже, в глаза у нас никто не видел. После создания этого пакета (QPI), фирма Gilsoft, судя по все- му, не прекращала работу. Вероятно, полу- чая целую кучу писем по поводу того, что не плохо бы сделать что-нибудь для того, чтобы можно было впихнуть еще больше вся- кой информации в не являющийся резиновым Spectrum 48K, фирма выпускает в дополне- ние к пакету программу Press, позволяющую компрессировать текстовую информацию. Но тут, скорее всего, возмутились те, что имели чуть более растягиваемый Spectrum 128K. Нету, мол, охоты грузить все время то одну программу, то другую, хотим, чтоб как у всех нормальных людей было два в одном (читатй, четыре в одном), да и хо- тим, чтобы игра могла занять все наши 128 для создания таких лабирнтов, что все иг- роки годами не могли бы пройти, единожды загрузив игру. Вот тогда и схватилась Gilsoft за голову (или за Keyboard'ы), смешала коды из всех программ, используя то ли XOR, то ли OR, а то и HORROR, и по- лучилась такая пакость, что ни в сказке сказать, ни форматтером убрать, короче, то, что и стало называться Professional Adventure Writer (PAW). О том, что может эта программа, ходят различные слухи. Говорят одни, что прог- раммистов она заживо съедает, другие го- ворят, что она-то и является причиной возникновения ночных кошмаров создателей адвентюр. Лично я лишь видел программы Майка Леммона (Compass Software), некото- рые произведения еще менее известных (у нас) программистов а также довольно из- вестный MINDFIGHTER, что был создан фир- мой Abstract Concepts, оказавшейся все той же вездесущей Delta 4, решившей-таки написать что-нибудь серьезное (однако по- чему-то там стоит название совершенно другого адвентюростроительного продукта). История создания этого перевода весьма типична. Просматривая как-то электронный журнал Sceptical, выпускавшийся годах в 88х фирмой Delta 4, наткнулся на рекламу сего программного продукта. Ради интереса решил посмотреть, есть ли эта вешь на буржуйских серверах, и к своему удивлению ее там и нашел (до этого искал там QPI, но нашел лишь Quill). Понятно дело, даль- ше искалось ее описание. После недели по- исков оно было найдено. Это был файл фор- мата Word, который содержал фирменную до- кументацию, набитую Пабло Контрерасом, за что ему объявляется благодарность с зане- сением в учетную книжку. После конверта- ции в MS-DOS формат объем составлял по- рядка 130К чистого английского текста. В связи с тем, что в русском языке слова более длинные, и с тем, что к некоторым английским предложениям дописывался русс- кий их перевод, объем слегка увеличился и на данный момент составляет порядка 150К (без картинок), что соответствует прибли- зительно 3/4 объема одинарного номера журнала ZX-Ревю. А вот на этом месте был совсем другой текст. Буквально за два дня до того, когда я должен был отдать все набитое редактору, на сервере появилась полная версия PAW, включая фирменный при- мер игры (TEWK), стартоввую базу данных и некоторые шрифты, которых не было в пер- воначально скаченной версии, так что те- перь комплект полон. Теперь же позвольте сделать небольшое отступление, чтобы сказать пару слов о самом переводе. Во-первых, я со всей ка- тегоричностью заявляю, что не учился в институте иностранных языков и что не яв- ляюсь профессиональным переводчиком, поэ- тому, возможно, текст получился несколько корявым. Возможно, по этой причине я не буду объяснять, где находится текущая ло- кация и почему ее так прозвали, и почему случаи бывают, как это ни странно, про- тивными. Во время перевода были исправле- ны некоторые логические ошибки (набиваль- шики и переводчики ведь тоже люди!), но, возможно, какие-то и остались. Кстати, при описании формата словаря в ZF 5 я долго думал, с какой же стороны подойти к класификации частей речи, ведь одна часть речи в русском языку может оказаться сов- сем другой в английском. И решил я тогда, что раз пишу на русском, то и применю русскую классификацию. Когда же я перево- дил этот текст, то понял, что лучше все-таки было использовать именно анг- лийскую, что и было сделано. И еще пару слов. Как известно, у бур- жуев Sinclair живет в качестве виртуаль- ной машины и TR-DOS там не в ходу, а ис- пользуется квазиленточный ввод. После то- го, как был найден PAW, он был отдан на переделку. Не имея возможности видеть ее результат и имея лишь Wordовский текст, где описываются лишь ленточные абрикосы, я последние и переводил на русский. Поэ- тому, если будут какие-то ньюансы в рабо- те с TR-DOS, то кто-нибудь их потом опи- шет отдельно. Да, чуть не забыл передать привет, а сегодня он передается разработчикам IS-DOS. Это весьма улетная операционка (за время работы полетело 2 (два!) диска с четвертой версией, так что большую часть всего текста пришлось набивать во второй, хорошо, что не форматнул ее в свое время, а то бы остался ни с чем, и это было бы невесело, ведь и так пришлось выгребать текст из-под обломков). И еще, ERROR 72 Rulezzzz Forever! Ну а теперь чуть-чуть о планах. Не знаю, как Вы, а лично я этот текст уже видеть не могу, сил не хватает просмот- реть его еще раз и выбрать оставшиеся очепятки. Чувствуется, что на какое-то время начисто пропадет желание что-нибудь писать. Когда же оно вновь появится, быть может допишу обещанную статейку про текст в адвентюрах (обещался проявиться более- менее перебирабельный декомпрессор для текста в LEVEL 9), а что дальше? (За кад- ром ГлаВРед, усмехаясь, мол, а это мы еще посмотрим, пустить, порезать или совсем зарезать, потирает руки.) Из последних интересных вещей на данную тему, что поя- вились на серверах, есть одна программка Unquill для PC размером порядка 20К, ко- торая из игры делает исходник, так что кто там вопил, мол, хотим чего-нибудь про PC? Нужна она Вам? Если да, то все вопро- сы к Главреду. Появилось вроде как фир- менная описаловка к GAC (Боже меня упаси от нее - хватит мне и PAW). Есть и ряд менее масштабных вещей. Так что почти усе зависит от Вас (может, зря только диско- вое пространство занимаю в ZF?). Короче, все, у кого возникнут предложения, заме- чания и просто умные мысли, могут обра- щаться. Адрес: ZF, либо старый E-mail: SAB94174@D1.IFMO.RU II. Дополнительная информация. Все права защищены. Ни одна часть до- кументации не может быть скопирована, да- на взаймы, куплена или воспроизведена в любой форме, включая электронную версию, без письменного разрешения авторов и Gil- soft International Ltd. Вышеуказанное замечание не относится к подпрограммам, которые являются частью Вашей игры, и Вы можете распространять ее свободно по Вашему желанию. Единственное, что Вы должны сделать, так это где-либо внутри игры упомянуть, что она была сде- лана при помощи PAW. От Пабло Контрераса: Если Gilsoft за- хочет устроить судебное разбирательство, то я бы был благодарен, если бы этого не произошло по следующим причинам: 1) Я большой поклонник Вашей продукции и всего лишь хочу увеличить ее исполь- зование 2) Сейчас никто ЭТО за деньги не купит 3) Сам я купил PAW, когда он появился 4) Кучи денег у меня все равно нет От переводчика: Я осмелился перевести этот текст из следующего соображения: Известно, что на серверах лежит толь- ко то, связанное с Sinclair'ом, авторы чего не считают теперь свой продукт ком- мерчески ценным. Так, например, Вы не сможете найти некоторые адвентюры фирм Zenobi и некоторых других фирм, потому что авторы просят не распространять их, и народ придерживается этого. PAW и его описание находятся довольно долго на мно- гих серверах, значит никаких возражений от Gilsoft не поступало. Т.о. Gilsoft дал разрешение на свободное использование PAW, поэтому вполне возможно и появление того перевода. Благодарности от Gilsoft: Спасибо Ho- ward и Pam за терпеливость, Phil за ком- ментарии, Greame за умные мысли, Dicon и другим за графику, а также всем нашим по- купателям за поддержку и советы. III. Введение. PAW может быть разделен на три основ- ные функциональные части: 1. База данных База данных представляет собой объеди- нение таблиц, созданных таким способом, что содержат всю информацию, необходимую для адвентюры. Эта база данных изначально содержит минимальное число строк, которые скорее всего потребуются в каждой игре. Обычно в таблице находится одна строка, что сделано для упрощения работы системы. База данных может использовать дополни- тельные RAM страницы 128K машины. 2. Редактор Редактор представляет собой двухуров- невую систему меню, т.е. большинство фун- кций главного меню могут вызывать подме- ню, из которых и можно получить доступ ко всем функциям программы. Все операции мо- жно произвести либо из командной строки, являющейся частью опции подменю, либо в ответ на запрос программы (промпт). Такое сочетание меню и командной строки оказа- лось наилучшим как для начинающих, так и для профессиональных пользователей. 3. Интерпретатор. Эта часть программы является сердцем PAW. В следующей главе будет дано деталь- ное описание его работы а если говорить коротко, то он получает команды от игрока и использует информацию, хранящуюся в ба- зе данных для того, чтобы декодировать те самые команды и как-то реагировать на них. Малый размер PAW не дает возможности для его полного размещения в основной па- мяти. На 128K машине основная часть про- граммы хранится в виде оверлейных файлов на дополнительных RAM страницах и пересы- лается в основную память при первой не- обходимости. Похожий подход используется для 48K машин и сосотоит в том, что три оверлея хранятся в памяти до тех пор, по- ка они не будут перекрываться создаваемой программой. Если на 128К машине инициали- зируются дополнительные RAM страницы или на 48К машине будут перекрыты оверлеи, то вызов опции, не принадлежащей к данному оверлею приведет к тому, что PAW попросит загрузить нужный оверлей. Главное меню и система оверлеев занимают примерно 4K пространства, которое будет недоступно для баз данных РAW. Около 10K занимают интерпретатор и его рабочее пространство, например, буфера для команды Ramsave, ввода и распакови. Таким образом, остает- ся около 27K для баз данных и еще 5 RAM страниц по 16K каждая, что в общей сумме составляет порядка 117К для 128K машины. Это пространство можно использовать весь- ма эффективно благодаря наличию текстово- го компрессора, который занимая еще 222 байта дает эффективность упаковки текста около 40%. Для среднестатистической пол- ностью текстовой адвентюра (без графики) для 48K машины это аналогично добавлению порядка 8K пространства для базы данных, т.е. общий объем пространства базы данных оставляет 35K. IV. Интерпретатор. Блок-схема 1. /───────\ ( Старт ) \───┬───/ │ ┌─────┴───────┐ │Инициализация│ └─────┬───────┘ │ ┌───\ │ │D >────────────┼────────────────────────────────┐ └───/ │ │ ┌───┴───────┐ │ │Описание │ │ │локации, │ │ │Таблица│ │ │процессов 1│ │ └───┬───────┘ │ │ │ ┌────────────────────────>│ │ │ │ │ │ ┌────┴───────┐ │ │ │Таблица │ │ │ │процессов 2,│ │ │ │Ввод фразы │ │ │ └────┬───────┘ │ │ │ │ │ Нет /────/_\────\ Да │ ┌────<Found? >───────┐ │ │ │ \────\-/────/ │ │ │ │ │ │ │ ┌──────┴───────┬ │ ,│ Нет /──────/-\──────\ Да │TURNS+1, │ │ 4│ ┌─< Пуст. действие? >────┐ │Поиск в табли-│ │ │ │ \──────\-/──────/ │ │це ответов│ │ │ │ │ └──────┬───────┴ │ │ │ │ │ │ │ ┌┴───────────┬ ┌────────┴─┬ │ │ │ │SM6 │ │SM35 │ │ │ │ │"I don't│ │"Time │ │ │ │ │ Understand"│ │Passes.." │ │ │ │ └────┬───────┘ └────┬─────┘ │ │ │ │ │ Да /─────/-\─────\ Нет │ ├<─────┴────────────────┴──<─────< Выполн. дейст?>──┬ │ \─────\-/─────/ │ │ │ │ │ │ ┌───────┴───┐ │ │ │Поиск в│ │ │ │таблице│ │ │ │соединений │ │ │ └──┬────────┘ │ │ │ │ │ Нет /──/-\──\ Да │ │ ┌──────────────────< Нашли? >──────┘ │ │ \──\-/──/ │ Нет /────/-\────\ Да │ ┌────────< Глагол<14 ? >───────────┐ │ │ \────\-/────/ │ │ │ │ │ ┌───┴──────┐ ┌────┴──────┐ │ │SM8 │ │SM7 │ │ │"Can't│ │"Can't go │ │ │do that" │ │that way" │ │ └───┬──────┘ └────┬──────┘ │ │ │ └──────┴───────────────<──────────────────┘ Блок-схема 2. /───────\ ( Старт ) \───────/ │ ├───────────────────────────────────────┐ │ │ │ │ Нет /────/-\────\ │ +───────────< Еще строки? > │ │ \────\-/────/ │ │ Да │ │ │ │ │ │ │ │ /────/-\────\ Да │ │ <В т. Ответов?>────────────┐ │ │ \────\-/────/ │ │ │ Нет /────────/-\────────\ Нет │ │ │ <Глагол соответствует?> ───────┤ │ │ \────────\-/────────/ │ │ │ │ Да │ │ │ │ │ │ │ │ │ │ │/─────────────/-\────────────\ Нет │ -│ │ <Существительное соответствует?>────┤ │ │\─────────────\-/────────────/ │ │ │ │ Да │ ├───────────────────────┴────<──────────┼─┐ │ │ │ │ │ /────/-\─────\ Нет │ │ │ <Еще кондакты ?>───────────────────────────────┤ │ │ \────\-/─────/ │ │ │ Да │ │ │ │ │ │ │ │ │ │ Нет /───/-\───\ Да │ │ │ ┌───< Условия ? >────────┐ │ │ │ │\───\-/───/ │ │ │ │ │ │ │ │ ┌──────┴─────────┐ /────/-\────\ Нет │ │ /│ │Выполн. действие│ < Выполнилось?>─────────────────┘ │ │ └──────┬─────────┘ \────\-/────/ │ │ │ │ Да │ │ │ │ │ │ │ │ │ │/──/-\──\ Да +───\ │ │ │ < DESC? >────+ D > │ │ │\──\-/──/ +───/ │ │ │ │ Нет │ │ │ │ │ │ │ │ │ │ │ Да /──/-\──\ Нет │ │ ├───< Exit? >───────────────────┴─────────────────────────>┘ │\──\-/──/ │ └───────>┐ │ /───────\ │ End │ │ Конец │ \───────/ Читая данную главу, необходимо обра- тить внимание на блок-схемы, приведенные выше. 1. Инициализация. Фоновые цвета и символьный набор уста- навливаются, но экран не очищается, как это обычно случается до описания нулевой локации. Все флаги обнуляются за исключе- нием флагов 37 - числа носимых объектов, который становится равным 4, флага 52 - максимальный вес носимых объектов, кото- рый становится равен 10, флагов 46 и 47 - текущее местоимение (Pronoun) (обычно ,"IT"), которым присваивается значение 255 (местоимения нет) и флага 1 - число носи- мых, но не надетых объектов. Заметьте, что такое обнуление флагов создает эффект того, что игра всегда будет начинаться из локации 0, что происходит из-за обнуления флага 38 - текущее местонахождение игро- ка. 2. Описание текущей локации. Если флаг 2 не равен 0, он уменьшается на 1. Если в комнате темно (флаг 0 не ра- вен 0) и флаг 3 не равен 0, то флаг 3 уменьшается на 1. Если в комнате темно, флаг 4 не равен 0 и отсутствует объект 0 (источник света), то флаг 4 уменьшается И Экран очищается, если текущий режим экрана (содержимое флага 40) не является первым. Если темно, объект 0 отсутствует, то печатается системное сообщение 0 (SM0 - "It's too dark to see anything" "Слишком темно..."). В противном случае отрисовы- вается картинка и печатается описание ло- кации без NEWLINE. 3. Сканирование таблицы процессов N1. Блок-схема 2 и последующий текст опи- сывают сканирование таблицы процессов. Таблица процессов N1 используется для храннения строк, нужных для добавления дополнительной информации к описанию те- кущей локации, например, открытые двери, присутствующие объекты и т.п. Здесь же при использовании 4 режима экрана будет осуществляться действие PROTECT для уста- новки номера строки, ниже которой будет скроллироваться текст. Теперь мы входим в основной цикл, где идет учет времени и происходит ответ на действия игрока. 4. Сканирование таблицы процессов N2. Основной блок работы PAW, используется для выполнения передвижений и действий PSI (псевдо-интеллектуальных персонажей, т.е. героев, контроллируемых не игроком, а компьютером), неконтроллируемых собы- тий, как, например, разрушение моста. 5. Получение фразы Если флаги с 5 по 8 не равны 0, они уменьшаются на 1. Если в комнате темно (флаг 0 не равен 0), и флаг 9 не равен 0, то последний уменьшается на 1. Если в комнате темно и флаг 10 не равен 0, то последний уменьшается при отсутствии объекта 0. Вызывается парсер (процедура преобра- зования введенного предложения в логичес- кое (LS). Если буфер ввода пуст, то путем печати промпта (приглашения ввода) и вы- зова подпрограммы ввода предложения полу- чаем новое предложение в буфер ввода. Промпт - системное сообщение, номер кото- рого содержится во флаге 42. Если там бу- дет находится 0, то это приведет к выдаче одного из системных сообщений SM2 - SM 5, причем вероятность их выдачи будет соот- ветственно 30:30:30:10. Если выбрана опция пустого действия ,(TIMEOUT) путем установления в флаге 48 значения большего, чем 0, то процедура ввода должна его отработать. В этом слу- ,чае выдается SM35 ("Time passes." "Прошло некоторое время...") и делается возврат к сканированию таблицы процессов N2. Введенное предложение конвертируется в логическое путем замены каждого слова введенного предложения при наличии его же в словаре программы на его числовое зна- чение и занесения этих значений в соот- ветствующие флаги. Если невозможно составить ни одно кор- ректное логическое предложение, то печа- ,тается SM6 ("I couldn't understand any of that" "Сказанное мне непонятно") и дела- ется возврат к сканированию таблицы про- цессов N2. 6. Сканирование таблицы ответов. Число команд, которые удалось конвер- тировать в логические предложения - Turns (флаги 31 и 32), увеличивается на 1. Два флага используются для того, чтобы полу- чить возможность вести счет до 65536 та- ких команд. Затем сканируется таблица ответов на предмет наличия строк, соответствующих Verb и Noun1 (Глагол и Существительное1) текущего LS, используя подпрограммы обра- ботки таблиц, которые будут описаны ниже. Если возможно проведение действия (ес- ли PAW выдает сообщение отличное от NOT- DONE), то происходит возврат к сканирова- нию таблицы процессов N2. 7. Сканирование таблицы соединений. Производится сканирование таблицы сое- динении на наличие слова, соответствующе- го Глаголу текущего LS. Если хотя бы одно из них найдено, то в флаг 38 (текущее местоположение игрока) заносится чмсло, соответствующее этому слову. Затем произ- водится возврат к описанию новой локации. В противном случае печатается SM7 ("I can't go in that direction" "Не могу пой- ти туда"), если глагол текущего LS меньше 14, иначе SM8 ("I can't do that" "Не могу это сделать"). В обоих случаях произво- дится возврат к сканированию таблицы про- цессов N2. V. Сканирование таблиц процессов. Таблица ответов является таблицей про- цессов (заметьте, что любой подпроцесс, вызываемый из таблицы ответов обладает такими же чертами), поэтому она также бу- дет сканирована этой частью PAW. Разница будет в том, что PAW попытается найти со- ответствия для Глагола и Существительно- го1 из LS в таблице ответов. PAW будет просматривать все данные в таблице до тех пор, пока не дойдет до ее конца. Предположим, что некоторая строка существует, и она, если находится в таб- лице ответов, будет проверяться на соот- ветствие Глаголу и Существительному. Ис- пользование слов "*" и "_" вместо Глагола или Существительного приведет к тому, что эта часть LS (Глагол или Существительное) может быть равна любому слову. Таким об- разом строки "* *", "_ _" и подобные вы- зовут выполнение строки вне зависимости от того, каким было LS. Это свойство должно быть использовано в любой таблице, которая будет вызываться как из таблицы ответов, так и из таблицы процессов. Если в таблице процессов Глагол и Существи- тельное совпадут, то остальное LS не бу- дет важно. PAW затем по очереди просмотрит все кондакты (CondAct - условие/действие). Если это будет условие, и оно выполнится, то PAW перейдет к следующему кондакту. В противном случае PAW выйдет из текущего списка кондактов и перейдет к следующей строке (строка - набор (список) кондак- тов), если таковая еще будет существовать в таблице. Исключение - QUIT : если про- верка даст отрицательный результат, сразу же произойдет выход из таблицы. Это не показано в блок-схеме 2 из соображений простоты. Если же кондакт будет действи- ем, то оно будет произведено. Действия можно разделить на следующие группы: 1. Desc:после выполнения произойдет пол- ный выход из обработки всех таблиц (даже если находлись в подпроцессе 10 уровня) и будет осуществлен переход к описанию те- кущей локации. 2. END : полный выход из обработки всех таблиц и переход на инициализацию новой игры. 3. Exit : любое действие,которое остано- вит обработку текущей таблицы и осущест- вит выход в вызвавшую таблицу (или назад в главный цикл, если находился в таблице ответов, процессов 1 или 2), например, EINVEN , DONE. 4. Conditional Exit: любое действие, ко- торое остановит обработку текущей таблицы и осуществит выход в вызывающую таблицу (или назад в главный цикл, если находился в таблице ответов, процессов 1 или 2),ес- ли нельзя выполнить требуемые функции, например, GET, PUT IN etc. В противном случае обработка будет продолжена со сле- дующего кондакта. 5. Normal : любое действие, выполнившее свои функции, и позволяющее PAW продол- жить просмотр следующих кондактов в теку- щей строке, например, COPYFF, PLUS. Легко заметить то, что QUIT относится к 4 типу действий, но все еще является условием, поэтому является самым настоя- щим кондактом. Полное описание всех кон- дактов находится в конце руководства, где и показывается принадлежность к типу. VI. Кондакты. В этой части руководства Вы найдете детализированное описание всех кондактов (CondActs - условия/действия). Они разде- лены на группы согласно тому, с чем они работают в PAW: флаги, объекты и т.п. Также приводятся некоторые подсказки по их возможному использованию. В тексте будут использоваться некото- ые сокращения: locno. Номер локации. locno+ Номер локации или: 252 not-created еще не созданный 253 worn надетый 254 carried носимый с собой 255 воспринимается как номер те- кущей локации mesno. Номер сообщения. sysno. Номер системного сообщения. flagno. Номер флага. procno. Номер подпроцесса. wordслово требуемого типа, которое находится в словаре или "_", что означает любое слово из словаря. value число от 0 до 255. VI.I. Условия (Conditions). 1) Существуют 4 условия, которые исполь- зуются для проверки локации, в которой находится в даннй момент игрок: AT locno Верно, если номер текущей лока- ции равен locno. NOTAT locno Верно, если номер текущей локации не равен locno. ACGT locno Верно, если номер текущей ло- кации больше locno. ATLT locno Верно, если номер текущей ло- кации меньше locno. 2) Существуют 8 условий, которые связаны с текущим положением объекта: PRESENT objno Верно, если объект с номе- ром objno. находится у игрока, надет на него или находится в текущей локации. ABSENT objno Верно, если объект с номе- ром objno. не находится у игрока, не на- дет на него и не находится в данной лока- ции. WORN objno Верно, если объект с номером objno. надет на игроке NOTWORN objno Верно, если объект с номе- ром objno. находится у игрока, но не на- дет на него. CARRIED objno Верно, если объект с номе- ром objno. находится у игрока. NOTCARR objno Верно, если объект с номе- ром objno. не находится у игрока. ISAT objno locno+ Верно, если объект с номером objno. находится в локации locno. ISNOTAT objno locno+ Верно, если объект с номером objno. не находится в локации locno. 3) Существует 8 условий, связанных со значениями и сравниванием флагов: ZERO flagno Верно, если значение флага flagno. равно 0 NOTZERO flagno Верно, если значение фла- га flagno. не равно 0. EQ flagno value Верно, если значение флага flagno. равно числу value. NOTEQ flagno value Верно, если значение флага flagno. не равно числу value. GT flagno value Верно, если значение флага flagno. больше числа value. LT flagno value Верно, если значение флага flagno. меньше числа value. SAME flagno1 flagno2 Верно, если значение флага flagno1 равно значению флага flag- no2. NOTSAME flagno1 flagno2 Верно, если зна- чение флага flagno1 не равно значению флага flagno2. 4) Существует 5 условий проверки расши- ренного логического предложения. Лучше использовать эти условия лишь тогда, ког- да необходимо специальное слово (или от- сутствие слова с использованием "_") для определения ситуации. Это увеличивает гибкость распознавания команд. ADJECT1 word Верно, если прилагательное первого существительного данного LS явля- ется словом word. ADVERB word Верно, если глагол данного LS является словом word. PREP word Верно,если предлог данного LS является словом word. NOUN2 word Верно, если второе существи- тельное данного LS является словом word. ADJECT2 word Верно, если прилагательное второго существительного данного LS явля- ется словом word. 5) Следующее условие используют для слу- чайных процессов. Их можно использовать для того, чтобы создать случайную возмож- ность падения дерева на игрока во время грозы или поломки моста и т.п. Не увле- кайтесь этой возможностью, всегда остав- ляйте игроку способ предотвращения таких событий, например, наличие резиновой обу- ви в случае с грозой. CHANCE percent Верно, если percent меньше или равен случайному числу из диапазона от 1 до 100 включительно. CHANCE 50 поз- волит PAW перейти к следующему кондакту только тогда, когда полученное случайное число находится в диапазоне от 1 до 50 - так реализуются, например, 50и процентные шансы на успех в каком-либо деле. 6) Существует единственное условие для проверки пустого действия (Timeout): TIMEOUT Верно, если во время запроса иг- рока было разрешено программистом выпол- нение (получение) пустого действия. Нап- ример, таблица процессов N2 может содер- жать строку TIMEOUT MESSAGE 0 (где MESSA- GE 0 есть строка "Come on, sleepy" "Хва- тит спать, соня!"). Еще лучше, если она будет вызываться при помощи CHANCE или счетчика пустых действий, чтобы надпись не появлялась слишком часто. Когда игрок некоторое время ничего не будет вводить с клавиатуры, машина ему напомнит, что не спать он сюда пришел, а играть (можно при этом извлечь из машины какие-нибудь за- думчиво-утробные звуки). 7) И, наконец,самый натуральный кондакт: QUIT В ответ на него печатается SM12 ("Are you sure?" "Вы уверены?"), после чего вызывается подпрограмма ввода. Вер- но, если игрок введет первую букву из SM30 ("Y") в ответ на промпт. В противном случае будет произведены действия NEWTEXT и DONE. ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября