Разработка программного модуля для компьютерной игры
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
, 2008.
) Бьярн Страуструп. Дизайн и эволюция С++. ДМК Пресс, 2006
) Эрик Дж. Брауде. Технология разработки программного обеспечения. "Питер", 2006.
) Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. Невский диалект, 2008.
) Айра Пол. Объектно-ориентированное программирование на С++. Бином, 2008.
) Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон "иссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Питер, 2009.
) Чарльз Петзолд. Программирование для Windows 95. BHV - Санкт-Петербург, 2007.
) Герб Саттер. Решение сложных задач на С++. Вильямс, 2008.
) Андрей Александреску. Современное проектирование на С++. Вильямс, 2007.
) Бьярн Страуструп. Язык программирования С++. Специальное издание. Бином, 2008.
) Д. Рихтер. Windows 2000 для профессионалов. Русская редакция, 2007.
) Документация к библиотеке zlib -
) Документация к библиотеке infozip -
) Онлайн-документация по шифрованию CRC32 (CIT-forum, RSDN, flipcode)
) Внутренняя документация MiSTland
Приложение 1
Руководство программиста.
Назначение и условия применения программы.
Модуль VFS предназначен для инкапсуляции файловых операций при получении доступа к файлам в различных типах хранилищ - каталог на диске, архив, зашифрованный файл, сетевой диск и т.п. Содержимое файлов предоставляется в виде стандартного потока С++, вне зависимости от их реального размещения. Все файлы находятся в едином пространстве имен, поэтому присутствует возможность итерирования по маске.
Модуль предназначен для работы в составе проекта, написанного на языке С++. Разработка велась с использованием компилятора из MSVS 7.1, и компиляция более слабыми в плане поддержки стандарта компиляторами не гарантируется. Для некоторого функционала необходимо наличие библиотек MS Windows не ниже версии 98. Аппаратные ограничения накладывает использующий модуль проект.
Характеристика программы.
Модуль не обладает возможностью строго гарантировать время работы своих функций. Модуль выполнен в виде статически связываемой DLL, которая должна быть в проекте в одном экземпляре. Для контроля правильности работы использован механизм исключений С++, а также класс дескриптора файла был снабжен возможностью быть проверенным в логическом выражении.
Обращение к программе.
Основной программный интерфейс модуля представлен в виде набор функций, заключенных в пространство имен. Для хранения дерева используется объект-одиночка system, который перед началом работы необходимо инициализировать. Перечень интерфейсных функций с описанием:
r_open_file (std::string& file_name, pred,
bool seekable = true) - открыть поток на файл по имени с использованием при поиске явно указанного предиката сортировки. Параметр seekable указывает, нужно ли открывать поток с возможностью поиска по нему (сказывается на быстродействии). В случае невозможности выполнения будет сгенерировано исключение.
inline std::auto_ptr r_open_file (
const std::string& file_name, seekable = true) - то же самое с использованием предиката по умолчанию.
inline std::auto_ptr r_open_file ( file_id &id,
bool seekable = true) - открыть поток на файл по его дескриптору. Наиболее быстрый вариант работы, поскольку поиск не производится.
template
inline file_id file_exists (std::string& file_name, pred) - проверить существование файла по имени.
Возвращаемый дескриптор можно проверить в любом логическом выражении С++. Если дескриптор правильный, по нему можно открыть поток.
inline file_id file_exists (
const std::string& file_name) - то же самое с использованием предиката по умолчанию.
template w_open_file (std::string& file_name, pred,
bool seekable = true) - открыть поток в файл на запись по имени. В случае невозможности выполнения будет сгенерировано исключение.
inline std::auto_ptr w_open_file (
const std::string& file_name, seekable = true) - то же самое с использованием предиката по умолчанию.
inline std::auto_ptr w_open_file (file_id &id,seekable = true, app = 0) - открыть файл на запись по идентификатору. Параметр append - добавлять ли запись в конец файла.
template void delete_file (std::string& file_name, pred) - удалить файл по имени, используя предикат сортировки при поиске.
При невозможности выполнения будет сгенерировано исключение.
inline void delete_file (
const std::string& file_name) - то же самое с использованием предиката по умолчанию.
inline void delete_file (file_id &id) - удалить файл по его дескриптору. get_files (std::string& file_name, pred,
unsigned param) - получить контейнер с файлами в виртуальной директории по маске с использованием при поиске предиката сортировки.
Параметр param позволяет задать флаги поиска аналогично функциям CRT.
inline fs_files get_files (
const std::string& file_name, param) - то же самое с использованием предиката по умолчанию.
inline void make_dir (
const std::string& file_name) - разбор пути и создание реальных директорий по нему там, где подсистемы это позволят сделать.
inline sub_fs_id mount (::auto_ptr what, std::string& path) - замонтировать подсистему в дерево.
Параметр what - подсистема, параметр path - желаемый виртуальный путь до неё. Система создаст виртуальные директории в необходимом количестве. Удаление подсистемы в конце работы VFS берет на себя объект system. Возвращаемое значение - идентификатор подсистемы, позволяющий выборочно её демонтировать.
inline std::auto_ptr unmount (_fs_id id) - демонтировать подсистему по её идентификатору.
&nbs