Я реализую простую игру для задания, которая в идеале будет работать как на Unix (с использованием графического контекста X11), так и на Windows (с использованием GDI Window) с обоими оконными менеджерами.Каков наилучший способ структурировать код так, чтобы я мог просто подключить правильный класс C ++, чтобы он работал на каждой ОС?
Более конкретно, как мне полностью отделить графический и оконный компоненты?фактического игрового компонента?(например, используйте шаблон наблюдателя, чтобы игровой компонент наблюдал на оконном компоненте платформы для пользовательского ввода, создавал общий интерфейс для загрузки / отображения спрайта, создавал другой общий интерфейс для перерисовки и т. д.).Кто должен нести ответственность за копирование и вставку контекста графики / устройства каждого объекта в главный экран gc / dc?Какой компонент должен содержать основной обратный вызов eventloop / window (если это основной компонент, то нужны ли мне две версии основного компонента для каждой платформы?) Кроме того, как сделать так, чтобы каждый объект (например, блоки, символы и т. Д.) Содержал платформутипы данных (gc
для X11 и DC
для GDI)?
Два основных требования: я могу использовать только X11 и GDI, и он не может быть многопоточным.