Моя структура основного кода игры такая:
- Создайте предметную игру. (создавайте НЕОБХОДИМЫЕ объекты, такие как окно SDL или камера)
- Вызов функции начинается с объектной игры. (Здесь создается каждая сущность или другие игровые компоненты, такие как тайловые карты или пользовательский интерфейс)
- Проходной цикл функции gameLoop (физика) и Renderloop объектной игры до закрытия окна.
- Вызов функции Очистка объектной игры, SDL_Quit и т. д.
Пример:
В конструкторе игры окно SDL должен быть создан. Однако функция «renderLoop» игры также должна иметь доступ к этому окну SDL.
так что game.hpp в основном выглядел вот так
Код: Выделить всё
class Game
{
public:
Game(); // Here created: Window, Camera, Textures
void start();
void gameLoop(const Uint8* p_keyBoardState);
void RenderLoop();
void CleanUp();
const int reference_win_width = 1920;
const int reference_win_height = 1080;
int win_height;
int win_width;
/* Textures */
SDL_Texture* Dirt_Texture;
SDL_Texture* Test_Texture;
/* Things needed to render */
Camera playerCamera;
float scalefactor;
RenderWindow window;
TileMap TestMap;
};
Код: Выделить всё
Game::Game()
{ //Initate every necessary object
win_width = 2000;
win_height = 1000;
float widthScaleFactor = win_width / (float)reference_win_width;
float heightScaleFactor = win_height / (float)reference_win_height;
scalefactor = 1;
window("TestGame", win_width, win_height, scalefactor); //doesnt work
// std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79105303/how-can-i-use-modify-a-class-in-different-functions-of-another-class[/url]