Итак, я полу новичок в C ++ и совершенно новичок в SDL.Большая часть моих концептуальных знаний ООП приходит из Java и PHP.Так что терпите меня.
Я пытаюсь выработать простую логику проектирования с моей программой / скоро буду боковым скроллером.Моя проблема заключается в попытке сделать мой «экранный» слой (screen = SDL_SetVideoMode(...)
) доступным для всех моих других классов;Класс героя, фоновый слой, враги и т. Д. Я неукоснительно следил за некоторыми процедурными уроками и пытался адаптировать их к более объектно-ориентированному подходу.Вот немного из того, что у меня есть:
main.cpp
#include "Game.h"
#include "Hero.h"
int main(int argc, char* argv[])
{
//Init Game
Game Game;
//Load hero
Hero Hero(Game.screen);
//While game is running
while(Game.runningState())
{
//Handle Window and Hero inputs
Game.Input();
Hero.userInput();
//Draw
Game.DrawBackground();
Hero.drawHero();
//Update
Game.Update();
}
//Clean up
Game.Clean();
return 0;
}
Как видите, у меня есть класс Game и геройучебный класс.Класс Game отвечает за настройку начального окна и размещение фона.Он также обновляет экран, как вы можете видеть.
Теперь, так как мой класс Game содержит свойство 'screen', которое является дескриптором для SDL_SetVideoMode
, я застрял, передавая это в любой другой класс (ex: Hero Hero(Game.screen);
) который нужно обновить до этого экрана ... скажем через SDL_BlitSurface
.
Теперь, это работает, однако я понимаю, что есть ПОЛНОСТЬЮ более элегантный подход.Как, возможно, оставить этот обработчик screen
в глобальной области видимости (если это возможно)?
TLDR / Простая версия : Как лучше всего сделать мой обработчик окон / экранов доступным для всех моих последующих классов?