Witam wszystkich.
Mam napisaną prostą gierkę w cpp z użyciem biblioteki SDL (multiplatformowa gierka)
Gra napisana strukturalnie dzięki czemu zaczyna być spory bałagan w kodzie. Postanowiłem przepisać kod tak aby był w pełni obiektowy, problem w tym, że biblioteka SDL nie wspiera obiektowości jak jest to w przypadku SFML. Stworzyłem w tym celu prosty szkielet, który w mojej ocenie pozwoli na wykorzystanie SDL w sposób obiektowy. Pytanie: czy moje podejście będzie poprawne ? może coś pozmieniać ?
Zaznaczę, że jest to jedynie szkielet, który wyświetla tylko okno aplikacji, chcę się upewnić, że moje podejście jest dobre zanim przepiszę cały kod.
main.cpp
#include <iostream>
#include <string>
#include "main.h"
#include "win.h"
AppInit::AppInit()
{
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO);
}
int main(int argc, char **argv)
{
AppInit app;
Win win;
//------------------------------------------------------------
SDL_Delay(10000);
}
main.h
#ifndef MAIN_H
#define MAIN_H
#include <SDL.h>
class AppInit
{
public:
AppInit();
};
#endif
win.cpp
#include "win.h"
Win::Win()
{
win = SDL_CreateWindow("SDL Game joszi", 100, 100, 800, 600, SDL_WINDOW_SHOWN);
src = SDL_GetWindowSurface(win);
}
win.h
#ifndef WIN_H
#define WIN_H
#include <SDL.h>
class Win
{
public:
Win();
SDL_Window *win;
SDL_Surface *src;
};
#endif
makefile
CXX = g++
SDLFLAGS = /home/joszi/sdl_lin/bin/sdl2-config --cflags
SDLLIBS = /home/joszi/sdl_lin/bin/sdl2-config --libs
OPT = -O2 -Wall
APPNAME = game
OBJDIR = objlin
all: $(OBJDIR)/main.o $(OBJDIR)/win.o
rm -f bin/$(APPNAME)
$(CXX) $(OBJDIR)/*.o `$(SDLLIBS)` -o bin/$(APPNAME)
clean:
rm -f $(OBJDIR)/*.o
$(OBJDIR)/main.o: src/main.cpp src/main.h
$(CXX) src/main.cpp $(OPT) -c `$(SDLFLAGS)` -o $(OBJDIR)/main.o
$(OBJDIR)/win.o: src/win.cpp src/win.h
$(CXX) src/win.cpp $(OPT) -c `$(SDLFLAGS)` -o $(OBJDIR)/win.o