Форум переехал на новый адрес: http://qsp.su



АвторСообщение





ссылка на сообщение  Отправлено: 19.03.10 16:30. Заголовок: Тем кто пользуется txt2gam (использование препроцессора)


При написании игры без использования QGen, исходный текст не зашифрован и может редактироваться любым текстовым редактором.

Это также даёт возможность обработать текстовый файл игры перед тем как он будет превращен в qsp-файл, например удалить отладочный код или не используемые фрагменты текста, также собрать один файл из нескольких мелких.

В мире программирование на C эта возможность называется "препроцессинг" и выполняется утилитой cpp, которая идет в пакете с компиляторами C.

В нашем случае удобно использовать утилиту которая не привязана к языку С и и может быть использована отдельно от компилятора — GPP для Win32.

Что бы воспользоваться этим, нужно добавить в текст специальные инструкции и обработать текст утилитой GPP, после такой обработки текст уже не будет содержать инструкции и может быть преобразован в qsp-файл без ошибок.

Инструкции (основные):
#define <имя> — определить флажек, на который можно будет позже ссылаться

#define <имя> <значение> — определить значение, которое можно будет позже ссылаться

#undef <имя> — удаление значения, или флажка

#ifdef <имя> — если флаг или значение определены, то весь текст после этого условия до #endif или до #else будет выведен в итоговый файл

#else — окончание фрагмента регулируемого инструкцией #ifdef, последующий текст выводится если условие в #ifdef не выполнено

#endif — окончание фрагмента регулируемого инструкцией #ifdef или #else

#ifndef — аналогично #ifdef, однако проверяется что флаг или значение не определены, весь текст после этого условия до #endif или до #else будет выведен в итоговый файл.

#include "<имя файла>" — в выходной файл вставляет текст из указанного файла (из той же папки), если файл содержит инструкции он также будет обработан

Поскольку в txt2gam по умолчанию для обозначения начала локации используется символ "#" важно что бы имена локаций не назывались бы по имени инструкции (define, ifdef, и т.п.). Также не стоит включать инструкции в комментарии и строки, лучше их записывать на отдельных строчках.

Доступны также и другие инструкции, о них можно узнать в документации или спросить в этой теме.

Для запуска текста игры на обработку нужно открыть текстовый терминал и набрать команду:
gpp.exe <входной файл> -o <выходной файл>

Другие ключи запуска можно узнать запустив как: gpp.exe --help

Приведу пример использования
Исходный файл:
#define HTML 

# Start

#ifdef HTML
USEHTML 1
#endif

- Start

после обработки в выходной файл запишется
# Start 

USEHTML 1

- Start

Если же убрать инструкцию #define например заменив на #undef то после обработки в выходной файл запишется
# Start 

- Start

То есть текст закрытый регулируемый инструкцией #ifdef был вымаран из конечного результата.

Прошу задавать вопросы в этой теме.

P.S. Документация на английском и домашний сайт GPP

Признаю за лифтами право на самоопределение Спасибо: 0 
Профиль Цитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 17
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия