В этой статье пойдет речь о том что я делаю для того чтобы Fallout 2 был кросс-платформенным.
Что такое интерфейс?
Вообще интерфейс это некоторый набор функций, которые хорошо документированы и которые должен использовать конечный программист-пользователь для выполнения действий с определенным контекстом. Идея в том что реализация этих функций скрыта от программиста. Это позволяет в случае необходимости написать интерфейс к другому контексту без изменения основной программы.
Где он может использоваться?
Есть такая проблема в мире - существует множество платформ, под которые должна работать ваша программа. Например, вы хотите чтобы ваша программа работала под Android, Windows, Linux, Macintosh. Как этого достичь? Неужели иметь 4 копии исходного кода, и когда что-то меняется вносить изменения во все 4 проекта?
Конечно нет. Достаточно вынести части программы, которые отвечают за вызовы системных функций в отдельный интерфейс. После этого достаточно сделать реализацию интерфейса под 4 операционных системы - и все. Весь остальной код использует вызовы функций интерфейса - его не надо переписывать.
Интерфейс к операционной системе в моем движке Falout 2
Так исторически сложилось что интерфейс к операционной системе похож на интерфейс других моих приложений, ну просто мне так удобнее. Я совсем не использую стандартную библиотеку языка с++ (только такие вещи как operator new, operator delete и другие служебные функции, которые нельзя не использовать) - так мне понятнее мой код и так он мне кажется гибче.
Глобальное пространство имен
- char chlower(char c) - возвращает символ 'c' в нижнем регистре.
- char chupper(char c) - возвращает символ 'c' в верхнем регистре.
- bool ischa(int c) - возвращает true если символ 'c' является буквой.
- int timeticks() - возвращает текущее время тиков со старта системы. Используется для инициализации генератора случайных чисел.
Пространство имен ui
- void timer(int milliseconds) - текущий ввод, процедура Input(), будет стараться возвращать событие InputTimer каждые 'milliseconds' миллисекунд.
- bool create(const char* title, bool full_screen_mode) - создать окно с заголовком 'title' возможно в полноэкраном режиме.
- void caption(const char* text) - смена заголовка окна на другой.
- void usepal(unsigned char* pal) - устанавливает палитру для текущего окна. Игра Fallout 2 использует палитру из 256 цветов. Эти цвета надо передать в эту функцию по 3 байта на цвет в порядке B,G,R.
- int input() - ключевая процедура. Останавливает выполнение программы до следующего события. Используя эту функцию программа не будет использовать 100% процессорного времени.
Реализуя вышеперечесленные функции можно сделать игру класса Fallout 2.
Комментариев нет:
Отправить комментарий