// main.cpp
#include "game.h"
#define WIDTH 1200
#define HEIGHT 800
int main(int argc, char* argv[]) {
Game* game = new Game();
game->init("SDL2",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
WIDTH,
HEIGHT,
false);
while (game->running()) {
game->events();
game->update();
game->render();
}
game->quit();
return 0;
}
// game.h
#pragma once
#include <iostream>
#include "SDL.h"
#include "SDL_image.h"
class Game {
public:
Game();
~Game();
void init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen);
void events();
void update();
void render();
void quit();
bool running() { return isRuning; }
private:
bool isRuning;
SDL_Window* window = nullptr;
SDL_Renderer* renderer = nullptr;
SDL_Texture* texture = nullptr;
SDL_Rect destRect;
};
// game.cpp
#include "game.h"
Game::Game()
{
}
Game::~Game()
{
}
void Game::init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen)
{
isRuning = false;
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
std::cout << "SDL_Init Error: " << SDL_GetError() << '\n';
return;
}
int flags = 0;
if (fullscreen) {
flags = SDL_WINDOW_FULLSCREEN;
}
window = SDL_CreateWindow(title, xpos, ypos, width, height, flags);
if (window == NULL) {
std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << '\n';
return;
}
renderer = SDL_CreateRenderer(window, -1, 0);
if (renderer == NULL) {
std::cout << "SDL_CreateRenderer Error: " << SDL_GetError() << '\n';
return;
}
isRuning = true;
SDL_Surface* image = IMG_Load("assets/11731.png");
texture = SDL_CreateTextureFromSurface(renderer, image);
SDL_FreeSurface(image);
}
void Game::events()
{
SDL_Event event;
SDL_PollEvent(&event);
switch (event.type) {
case SDL_QUIT:
isRuning = false;
break;
}
}
void Game::update()
{
destRect.h = 128;
destRect.w = 128;
}
void Game::render()
{
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, texture, NULL, &destRect);
SDL_RenderPresent(renderer);
}
void Game::quit()
{
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
SDL_Quit();
std::cout << "Game Over" << "\n";
}