Files
luna/src/main.cpp
2025-11-05 20:13:07 +01:00

69 lines
1.5 KiB
C++

#include <SDL3/SDL.h>
#include <SDL3/SDL_events.h>
#include <SDL3/SDL_render.h>
#include <SDL3/SDL_timer.h>
#include <cstdio>
#include <cstdlib>
#include "../include/gfx.hpp"
bool key_event(SDL_Event e) {
if (e.type == SDL_EVENT_KEY_DOWN) {
if (e.key.key == SDLK_Q) {
return true;
}
}
return false;
}
bool event_handling(SDL_Event e) {
while (SDL_PollEvent(&e)) {
if (e.type == SDL_EVENT_QUIT) {
return true;
}
if (key_event(e)) {
return true;
}
}
return false;
}
int main() {
if (!SDL_Init(SDL_INIT_VIDEO)){
std::printf("SDL_INIT() failed");
return EXIT_FAILURE;
}
SDL_Window *window;
window = SDL_CreateWindow("Physics Sim", 720, 540, SDL_WINDOW_RESIZABLE);
if (window == NULL) {
std::printf("SDL_CreateWindow() failed");
return EXIT_FAILURE;
}
SDL_Renderer *renderer = SDL_CreateRenderer(window, NULL);
if (renderer == NULL) {
std::printf("SDL_CreateRenderer() failed");
}
SDL_Event e;
bool exit = false;
struct {
int x;
int y;
} circle_pos;
circle_pos = {10, 10};
while (!exit) {
exit = event_handling(e);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
SDL_RenderClear(renderer);
gfx::draw_circle(renderer, circle_pos.x, circle_pos.y, 10);
circle_pos.x++;
SDL_RenderPresent(renderer);
SDL_Delay(16);
}
SDL_Quit();
return 0;
}