Связь с администрацией сайта:       

demo

Среди толпы я одинок

10. Входные потоки и устройства в Z-машине

10.1 V1-V2 только клавиатура.
В версии 1 и 2, команды игрока могут быть сделаны только с клавиатуры.
10.2 Входные потоки
В версии 3 и более поздних, нажатия клавиш игрока черпаются из текущего "входного потока"(input stream). Есть два входных потока: пронумерованных от 0 (клавиатура) и 1 (файл, содержащий команды). Другие входы (щелчков мыши или пункты меню), если таковые имеются, также реализованы в виде нажатий (смотри ниже).
 
10.2.1
Формат файла, содержащего команды, должен быть таким же, как написано в выходном потоке 4.
10.2.2
Игра может изменить текущий входной поток самостоятельно, используя опкод input_stream . Она не имеет никакого способа узнать, какой входной поток в данный момент используется. Интерпретатор может свободно изменять входной поток всякий раз, когда ему нравится (например , по желанию игрока) или, на самом деле, чтобы запустить всю игру под входной поток 1 (для целей тестирования).
10.2.3
Когда сначала выбирается входной поток, интерпретатор может использовать любой метод выбора имени файла для файла команд. (Хорошая практика заключается в использовании тех же правил, что и при выборе файла для вывода в поток 4)
10.2.4
Когда текущий поток 1, интерпретатор не должен занимать длинные отрывки текста (при печати "[MORE]" и ожидания нажатия клавиши, например).
 
10.3 Поддержка мыши
Поддержка мыши не является обязательным, но может быть представлена ​​в версиях 5 и более поздних версий.
10.3.1
В игре, которая хочет использовать мышь, в заголовке бит 5 'Flags2' должен быть установлен в файле истории. Если он хочет считать положение мыши после кликов, она должна обеспечить, по крайней мере первые два слова таблицы расширения заголовка. (Обратите внимание, что Inform 6.12 и позже всегда обеспечивают таблицу расширение заголовка, но Inform 6.11 и раньше никогда не предоставляют таблицу расширения вообще)
10.3.1.1
Если интерпретатор не может предложить поддержку мыши, то он должен очистить бит 5 'Flags 2', чтобы сигнализировать об этом в игре.
10.3.2
Всякий раз, когда действия мыши происходят (и при условии, что расширение заголовка таблицы существует и содержит, по меньшей мере, 2 слова) интерпретатор должен обновить координаты следующим образом:
   Word 1:  x coordinate where click took place
   Word 2:  y coordinate where click took place
   Слово 1: координата х, где нажали мышью
   Слово 2: координату y, где нажали мышью
10.3.3
Мышь находится между 0 и 16. Состояние этих кнопок могут быть прочитаны опкодом read_mouse в версии 6. В противном случае, щелчки мыши рассматриваются как ввод с клавиатуры (смотри ниже).
10.3.4
В версии 6, мышь может иметь доступ или ограничена к одному из 8 окон: если да, то щелчки за пределами "окна мыши" должны быть проигнорированы, а интерпретатор понимать, что необходимо ограничить движение мышки к границе его окна.
 
10.4 Поддержка меню
Поддержка меню может быть предусмотрена в версии 6.
10.4.1
В игре, которая хочет использовать меню, в заголовке бит 8 'Flags 2'  должен быть установлен в файле истории.
10.4.1.1
Если интерпретатор не может предложить поддержку меню, то он должен очистить бит 8 'Flags 2', чтобы сигнализировать об этом в игре.
10.4.2
Меню пронумерованы от 0 вверх. 0, 1 и 2 зарезервированы для интерпретатора как управление (эта система только была реализована на Macintosh, в котором 0 является меню Apple , 1 меню File и 2 меню Edit). Меню пронумерованы 3 и выше и могут быть созданы или удалены опкодом make_menu .
10.4.3
Выбор меню сообщается в игре, как нажатие клавиши (смотрите ниже). Подробности того, что был сделан выбор считываются read_mouse .
 
Целые команды считываются из входного потока с помощью опкода read. (Обратите внимание, что он имеет два различных внутренних имени в Inform, sread для версий 1 до 4 и aread в последующих)
10.5.1
В версиях от 1 до 3, интерпретатор должен снова отобразить строку состояния перед началом приема входных данных.
10.5.2
Команды, как правило, завершается символом новой строки (возврат каретки или перевода строки по мере необходимости для клавиатуры или файла формата машины).
10.5.2.1
В версии 5 и более поздних версий, игра может обеспечить "terminating characters table", давая свой адрес байта в слове заголовка на $ 2e . Эта таблица является нулевым списком входных символов-кодов, которые вызываются aread для завершения команды (в дополнение к новой строки). Только функциональные коды клавиш разрешены: они определяются как те, что между 129 и 154 включительно, вместе с 252, 253 и 254. Специальное значение 255 означает "любой функциональный код клавишы ".
10.5.3
*** [1,0] В версии 4 и более поздних, интерпретатор должен в идеале иметь возможность вводить время и вызывать (игра) процедуру через определенные промежутки времени: см опкод read.Если он в состоянии сделать это, то он должен установить в заголовке бит 7 'Flags 1'.
 
В версии 4 и более поздних, отдельные символы могут быть прочитаны из текущего входного потока, используя read_char . Опять же, интерпретатор должен в идеале иметь возможность ввода времени и вызвать (игра) процедуру через определенные промежутки времени. Если он в состоянии сделать это, он должен установить в заголовке бит 7 'Flags 1'.
 
10.7 Чтение ZSCII с клавиатуры
Только символы, которые могут быть прочитаны с клавиатуры являются ZSCII символами, определенные для ввода (см S 3).
10.7.1
Каждый ZSCII символ определен для ввода и может быть возвращен read_char .
10.7.2
Только ZSCII символы, определенные для ввода и вывода могут быть сохранены в текстовом буфере, подводимой опкодом read.
10.7.3
"Escape " код не является обязательным: то есть, интерпретатор не должен указывать ключ Escape. (Inform библиотеки очищают и завершают работу меню, если этот код возвращается в read_char )
 
Примечание
Меню в «Beyond Zork» открывается курсором вверх и курсором вниз, как окончание ввода символов, и использование статуса read в верхнем окне.
Координаты мыши возвращаемые read_mouse или записываемые в заголовок во время ввода, всегда считаются по отношению к верхней части дисплея в точке (1,1), независимо от положения текущего окна мыши.
read_mouse - работает режиме реального времени. При вызове он должен прочитать текущее местоположение мыши, является ли курсор мыши внутри текущего окна мыши. Интерпретаторам разрешено показывать позиции и состояния кнопки вне экрана Z-машины, если указатель мыши находится вне собственного пользовательского интерфейса интерпретатора (используя отрицательные значения, если это необходимо).
Программы должны быть готовы справиться с этим. Например, в графических программах вы можете игнорировать все кнопки внизу за пределами экрана. При перемещении вы можете продолжать пытаться следовать за указателем, даже за пределами экрана, пока кнопки не будут показаны.
Интерпретаторы могут ограничить указатель на экране до тех пор, пока удерживаются кнопки - это может помочь при операциях перемещения - хотя это и не требуется.
Голосуй
(0 Голоса)