ZX Format #06
29 июля 1997
  Софт  

Игрушки - описание редактора Адевентюр - PAW (часть 1).

<b>Игрушки</b> - описание редактора Адевентюр - 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.
...



Другие статьи номера:

Сегодня в номере - содержание журнала.

Авторы - авторы журнала ZX-Format No.6

От авторов - свершилось давно ожидаемое событие...

Игрушки - Последний утюг (новелла по игре 48 утюгов).

Игрушки - Приключения Винни Пуха. Часть вторая.

Игрушки - описание игры The Crypt (Castle Master 2).

Игрушки - описание редактора Адевентюр - PAW (часть 1).

Игрушки - описание редактора Адевентюр - PAW (часть 2).

Игрушки - описание редактора Адевентюр - PAW (часть 3).

Игрушки - описание редактора Адевентюр - PAW (часть 4).

Игрушки - описание редактора Адевентюр - PAW (часть 5).

Программистам - Beta Basic: продолжение разговора о бейсике (часть 2).

Программистам - General Sound: Руководство по программированию.

Программистам - MMD - драйвер. Описание структуры драйвера модема для терминальной программы MMD.

Программистам - AI от В.Медноногова. Подробное описание "волнового алгоритма" трассировки (автоматического рассчета оптимального) пути, с примером реализации на Basic.

Программистам - Искуственный интеллект. Продолжение цикла статей об "AI". Общие основы нахождения пути к цели.

Программистам - Тr-Dos для программистов. Макс Петров завершает свой рассказ о нетрадиционых методах работы с диском.

Программистам - обмен опытом: "3-colour". Описание эффекта "8-цветов на точку", хелп к вьюверу и сколько слов о конвертации картинок в формат "3-colour".

Программистам - обмен опытом: "3-colour". Несколько слов о конвертации картинок в формат RGB.

Программистам - обмен опытом: программирование мультиколорных эффектов.

IS-DOS - пользователям: как выполнить индивидуальную настройку системы IS-DOS на конкретную модель ZX Spectrum-совместимого компьютера и на выполнение Ваших задач.

IS-DOS - пользователям: как скопировать системный диск IS-DOS и остаться при этом в живых.

IS-DOS - программистам: краткий курс - программирование в среде IS-DOS.

IS-DOS - news: новые программы IS-DOS.

Железо - Краткий рассказ о возможностях процессора Z-180.

Железо - Multiviewer. Описание доработочки, позволяющей мерять скорость программ по бордюру без влезания в коды - легким нажатием кнопки.

Железо - о новом проекте фирмы Peters - "Sprinter". Новый Spectrum-совместимый компьютер нового поколения Speccy.

Железо - Мнение пользователя о скорпионовском контроллере IDE HDD - SMUC.

Железо - SuperSpectrum: об одном проекте Spectrum-совместимой машины. Её особенностью является совместимость с PC.

Железо - X-Trade FAQ. Ответы на наиболее часто задаваемые вопросы по GS и XTR-модему.

Премьера - Flash tracker. Описание 4-х канального редактора цифровой музыки, работающего с SoundDrive, от самого автора SoundDrive - Flash Inc.

Премьера - Описание последней версии универсальной терминальной программы, используемой в SpbZxNet.

Премьера - Mortal Kombat: что ждёт Вас в полной версии игры и некоторые коментарии к demo версии.

Премьера - XReversy: презентация новой игрушки, из популярного семейства "реши задачку - посмотри картинку".

Интервью - Интервью с одним из известнейших спектрумистов - Андреем Ларченко.

Здесь был ты - Рассказ "Абсолютная власть".

Здесь был ты - Рассказ "Дорога".

Здесь был ты - Повелитель зубов: пародия на одну популярную трилогию...

Почта - Обратная связь: ответное письмо Alex'а из Нижнего Тагила, выставленного в прошлом номере в "Уголок ламера".

Почта - Письма читателей: Андрей Яковлев, Денис Токарчук, Алексей Гаркулим, Александр Гордеев, Евгений Шумилов, Ниточкин Вадим, Михаил Ларкин.

Почта - бесплатная реклама и обьявления.

Разное - Страшилка.: Nemo рассуждает о месте PC и Spectrum'а в современной России.

Разное - Рецензия Nemo на книжку по цифровой схемотехнике. Для всех, кто хоть когда-нибудь испытывал желание включить паяльник и...

Разное - анкета: Результаты нашего социологического опроса спектрумистов.

Разное - Конкурс. Краткий отчет о наших конкурсах.

Разное - Проблемы рынка ПО: когда загнется Спектрум. Во всем ли виноваты Хакеры?

Разное - Перспективы ПО. Краткий обзор готовящегося к выходу ПО: Fast Tracker, Pro Sound Creator, Чёрный Ворон.

Разное - Перспективы ПО. Адвентюра From Beyond или "Извне".

Разное - мемуары о Питерской модемной сети для ZX Spectrum - SPbZXNet.

Amiga Club - Между нами, пользователями: сравнение характеристик Amiga 1200 с IBM PC.

Amiga Club - сравниваем производительность Амиг и PC. Насколько Амига актуальна в современных играх?


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Горячий привет - крах оригинального проекта "ELITE-3". Рассказ о скандальной истории, связанной с этой игрой.
Слово в защиту ламера - Осваивая Интернет, мы научились различать юзера и провайдера.
Почётные и Вечные - Список Заслуженных Пользователей AC Edit.
Hам пишут! - Мihаil Вrоm.
PartyZone3 - Forever 2e3 SE results.

В этот день...   20 апреля