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

demo

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

7. Потоки вывода и обработки файлов в Z-машине

Оглавление

7.1 Выходные потоки
В любой момент времени текст выводится через выбор "выходных потоков" (output streams).
7.1.1
Два выходных потока являются общими для всех версий: номер 1 (экран) и 2 (игра стенограммы, как правило, выводимого на принтер или в файл).
7.1.1.1
В версиях от 1 до 5, вход игрока на чтение опкодом, должно быть вторичным выходных потоков 1 и 2 (если поток 2 активен), так что текст набран и появляется в любом транскрипте. В версии 6 вход должен быть присвоен только потоку 1.
 
7.1.1.2
В игре 4-й версии Infocom в «A Mind Forever Voyaging», в которой предполагалось выводить на печать, а не в файл, чтобы получить расшифровку, а поток 2 выключен и снова  включен несколько раз в быстрой последовательности. Таким образом, если интерпретатор решает, куда послать расшифровку, попросив игрока указать имя файла, то этот вопрос следует задавать только один раз за всю игровую сессию, а не каждый раз, когда выбран поток 2.
7.1.2
Версии 3 и более поздних версиях поставить эти и два других выходных потоков, пронумерованных 3 (память Z-машины) и 4 (файл сценария целых команд игрока и отдельных нажатий клавиш,  прочитанных в read_char ).
7.1.2.1
Выходной поток 3 записывает в таблицу в динамической памяти. Когда выбран поток, таблица может иметь любое содержание (даже начальный "size" слова будет проигнорирован интерпретатором). Пока выбран поток, содержимое этой таблицы являются неопределенные переменные (и игра не может безопасно считывать или записывать в нее). Когда поток выбран, начальное слово таблицы содержит количество напечатанных символов и последующие байты сохраняют эти символы. Точно так же, в версии 6, общая ширина печати (в единицах), будут сохранены в слове заголовка на $30. (Это задача программиста, чтобы сделать таблицу достаточно большой: Интерпретатор не выполняет проверку переполнения).
7.1.2.1.1
*** [1,0] Вполне возможно, поток 3 должен быть выбран, в то время как она уже включена. Если это произойдет, предыдущий адрес таблицы запоминается, а предыдущая таблица возобновляется, когда новая закончена. Эти вложенности могут достигать глубины до 16 таблиц: если поток 3 открыт в семнадцатый раз, интерпретатор должен остановить с сообщением об ошибке.
7.1.2.2
Выходной поток 3 необычен тем, что, в то время как он выбран, текст не передается на любые другие выходные потоки, которые выбраны. (Тем не менее, они по-прежнему выбраны)
7.1.2.2.1
Newlines(Новые строки) записываются в выходной поток 3, как ZSCII 13. (игра никогда не выведет в print_char значение 10, или любое другое значение , которое не определено в качестве выходного кода ZSCII.)
7.1.2.3
Выходной поток 4 необычен тем, что, когда он выбран, единственный текст, напечатанный на него является командами игрока и нажатия (read_char ). (Каждая команда записывается, когда она была закончена. Время задержки и нажатия кнопки мыши в идеале должны быть записаны. Для предложений о том, каким образом это может быть достигнуто, смотрите раздел «Примечания» ниже. Ошибки при вводе и их использовании "delete" не описаны)
 

Пред. След. »

Rate this item
(0 votes)
Login to post comments