69 lines
1.5 KiB
C++
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;
|
|
}
|