Adventurer
#07
31 января 1998 |
|
Обмен опытом - QUILL редактор адвентюр - достоинства и недостатки.
(C) Dr. Laser (C) Музыка: Cardinal/Accept Corp. "QUILL" - ДОСТOИНСТВА И НЕДОСТАТКИ ─────────────────────────────────── Идея написать собственную программу возникла у меня почти одновременно с появлением компьютера. Однако, я очень скоро обнаружил, что для того, чтобы на- писать программу, нужно уметь программи- ровать. А так как программировать в то время я не умел (а если честно, то и сей- час не умею), то мне оставалось только мечтать о том, чтобы появилась такая программа, которая была бы достаточно мощной для того, чтобы на ней можно было написать крутую игру, и, в то же время, достаточно простой для того, чтобы я мог на ней работать. В то время я еще не знал, что такая программа уже существует, но тот день и час, когда я должен был об этом узнать, неотвратимо приближался. И наконец, это свершилось! В журнале "ADVENTURER" N5 я увидел программу под названием "QUILL" .Мне не нужно было дол- го думать, чтобы понять - это как раз то, о чем я мечтал. С одной стороны, на ней можно писать очень крутые программы (с некоторыми из них можно ознакомиться с помощью приведенной там же программы "TESTQUILL"), с другой стороны, она нас- только проста в управлении, что на ней может работать любой чайник (даже такой, как я!!!). Мне не составило (почти) ника- кого труда понять, как она работает, чему в немалой степени способствовало очень подробное и понятное описание, опублико- ванное в том же журнале. Правда, одна ошибка в нем все же есть: команда логики "снять предмет" называется не REMO, a REMOVE. А теперь я хотел бы кратко описать достоинства QUILL 'a по сравнению с программой ABS (с которой у меня тоже есть опыт работы, но далеко нестоль удач- ный). 1. В ABS автоматически (по запро- су) можно ввести лишь некоторые числовые данные (количество локаций, объектов и т. п.), а все остальное вводится программным путем, в то время как в QUILL автомати- чески вводятся не только числовые, но и символьные данные (описание локаций, объ- ектов, сообщения и т.п.). Автоматизирова- ны также процедуры поиска,редактирования, удаления, сохранения и загрузки данных. 2. При работе на ABS можно исполь- зовать только стандартные команды логики, в то время как QUILL имеет 43 команды ло- гики, которые не только облегчают работу, но и делают процесс задания логики более наглядным и очевидным. 3. Наличие в QUILL 'e режима тести- рования, позволяющего выполнить пробный запуск игры и, если обнаружены ошибки, вернуться в программу и исправить их. 4. Наличие в QUILL 'е команд,позво- ляющих автоматизировать такие игровые си- туации, как вывод на экран описания лока- ции, инвентаря игрока, сохранение/загруз- ка текущей игровой ситуации и т.п. Вот, пожалуй, и все. Однако, чтобы быть объективным, я должен упомянуть и недостатки QUILL 'а,а также способы борь- бы с ними. 1. В процессе задания логики вы мо- жете задать реакцию программы на поданую команду, но не можете заставить ее реаги- ровать требуемым образом, если нужная ко- манда НЕ подана. Пример: Вы создали в начале прог- раммы (локации 0) меню, для вызова опций которого необходимо вводить цифры от 1 до 5. (Здесь и далее н.п. - условия низ- шего приоритета, в.п. - условия высшего приоритета) (н.п.):I 1 _ AT 0... I 2 _ AT 0... и т.д. Но так как среди пользователей обя- зательно найдутся такие, которые будут пытаться вводить другие цифры (а то и буквы), то вам хотелось бы сделать так, чтобы при вводе любых других цифр или букв программа напечатала ваше сообщение, объясняющее, что введено не то, что про- сили и, сделав паузу,вернулась в меню. Но ничего не выйдет. Способ борьбы: радикально с этим ни- чего не поделать (разве что внести изме- нения в машинный код программы). Однако вы можете запрограммировать на соответст- вующую реакцию основные команды програм- мы, а также прикинуть другие наиболее вероятные варианты (в примере это цифры от 6 до 0). (н.п.) I и _ AT 0 MESSAGE 22 PAUSE 100 GOTO 0 DESC I с _ AT 0 MESSAGE 22 PAUSE 100 GOTO 0 DESC I 6 _ AT 0 MESSAGE 22 PAUSE 100 GOTO 0 DESC и т.д. А на все остальные команды и другие слова, которые может ввести пользователь, QUILL сам отреагирует своими стандартными сообщениями. Конечно, выглядеть это будет не так эффектно, но все же лучше, чем совсем ничего. 2. Все команды логики воспринимают- ся так, как если бы между ними стояла ко- манда AND (И). Если же вы хотите задать условие по принципу OR (ИЛИ), то у вас ничего не выйдет. Пример: У вашего героя есть горящий факел (объект 2). Если он бросит его в одном из двух зданий (локации 1 и 4), начнется пожар (сообщение 26). На первый взгляд, в этом нет ничего сложного. (н.п.) I брос факе AT 1 AT 4 CARRIED 2 DROP 2 MESSAGE 26 Но вы быстро убедитесь, что такой вариант не работает. И не удивительно, ведь для того, чтобы выполнить условие, нужно, чтобы герой находился одновременно и в локации 1 и в локации 4, а это невоз- можно. Способ борьбы: радикально с этим ни- чего не поделать (разве что внести изме- нения в машинный код программы). Но вы можете изменить сценарий, чтобы локации, в которых возможны одинаковые действия, имели смежные номера и обрабатывать их при помощи команд ATGT и ATLT. Изменим в нашем примере номер локации 1 на 3. (н. п.) I брос факе ATGT 2 ATLT 5 CARRIED 2 DROP 2 MESSAGE 26 Если же вы не можете (или не хотите) так поступить, то вы можете задать логику отдельно для каждой локации. (н. п.) I брос факе AT 1 CARRIED 2 DROP 2 MESSAGE 26 I брос факе AT 4 CARRIED 2 DROP 2 MESSAGE 26 3. Во время работы команд логики "выход из игры" (QUIT) и "конец игры" (END) на экран выводятся вопросы, ответы на которые необходимо вводить на английс- ком языке. Способ борьбы: радикально с этим ни- чего не поделать (разве что внести изме- нения в машинный код программы). Но вы можете сделать свои эквиваленты команд QUIT и END. Пример: У вас есть сообщение 82: "Хотите закончить игру? (д/н)", сообщение 83: "Хотите попробовать еще раз? (д/н)" и сообщение 84: "Для выхода из игры нажмите "СБРОС". (н. п.) I стоп _ MESSAGE 82 LET 3 2 I д _ EQ 3 1 MESSAGE 83 LET 4 2 I н _ EQ 3 1 DESC I д _ EQ 4 1 GOTO 0 DESC I н _ EQ 4 1 MESSAGE 84 MESSAGE 83 LET 4 2 (в. п.) I _ _ NOTZERO 3 MINUS 3 1 I _ _ NOTZERO 4 MINUS 4 1 Если же вы не можете (или не хотите) так поступить, то есть более простой спо- соб: вставлять перед командами QUIT и END сообщение-подсказку. Пример: У вас есть сообщение 93: "Если хотите ответить "да", введите "Y", а если "нет", то "N". (н. п.) I стоп _ MESSAGE 93 QUIT SCORE TURNS MESSAGE 93 END Вот, пожалуй, и все. Конечно, вполне вероятно, что все это давно известно и никому не интересно. Но мне хочется на- деяться, что эта информация принесет ко- му-нибудь пользу.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября