feat: split code

This commit is contained in:
2025-11-05 20:13:07 +01:00
parent d9156ee137
commit 1fff793de6
3 changed files with 48 additions and 28 deletions

9
include/gfx.hpp Normal file
View File

@@ -0,0 +1,9 @@
#ifndef GFX_UTILS_HPP
#define GFX_UTILS_HPP
#include <SDL3/SDL_render.h>
namespace gfx {
void draw_circle(SDL_Renderer *renderer, int center_x, int center_y, int radius);
}
#endif

30
src/gfx/circle.cpp Normal file
View File

@@ -0,0 +1,30 @@
#include <SDL3/SDL_render.h>
namespace gfx {
void draw_circle(SDL_Renderer *renderer, int center_x, int center_y, int radius) {
int x = radius;
int y = 0;
int decision = 1 - x;
SDL_SetRenderDrawColor(renderer, 255, 0, 255, 255);
while (x >= y) {
SDL_RenderPoint(renderer, center_x + x, center_y + y);
SDL_RenderPoint(renderer, center_x - x, center_y + y);
SDL_RenderPoint(renderer, center_x + x, center_y - y);
SDL_RenderPoint(renderer, center_x - x, center_y - y);
SDL_RenderPoint(renderer, center_x + y, center_y + x);
SDL_RenderPoint(renderer, center_x - y, center_y + x);
SDL_RenderPoint(renderer, center_x + y, center_y - x);
SDL_RenderPoint(renderer, center_x - y, center_y - x);
y++;
if (decision <= 0) {
decision += 2 * y + 1;
} else {
x--;
decision += 2 * (y - x + 1);
}
}
}
}

View File

@@ -4,6 +4,7 @@
#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) {
@@ -26,33 +27,6 @@ bool event_handling(SDL_Event e) {
return false;
}
void draw_circle(SDL_Renderer *renderer, int centerX, int centerY, int radius) {
int x = radius;
int y = 0;
int decision = 1 - x;
SDL_SetRenderDrawColor(renderer, 255, 0, 255, 255);
while (x >= y) {
SDL_RenderPoint(renderer, centerX + x, centerY + y);
SDL_RenderPoint(renderer, centerX - x, centerY + y);
SDL_RenderPoint(renderer, centerX + x, centerY - y);
SDL_RenderPoint(renderer, centerX - x, centerY - y);
SDL_RenderPoint(renderer, centerX + y, centerY + x);
SDL_RenderPoint(renderer, centerX - y, centerY + x);
SDL_RenderPoint(renderer, centerX + y, centerY - x);
SDL_RenderPoint(renderer, centerX - y, centerY - x);
y++;
if (decision <= 0) {
decision += 2 * y + 1;
} else {
x--;
decision += 2 * (y - x + 1);
}
}
}
int main() {
if (!SDL_Init(SDL_INIT_VIDEO)){
std::printf("SDL_INIT() failed");
@@ -61,8 +35,15 @@ int main() {
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;
@@ -76,7 +57,7 @@ int main() {
exit = event_handling(e);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
SDL_RenderClear(renderer);
draw_circle(renderer, circle_pos.x, circle_pos.y, 10);
gfx::draw_circle(renderer, circle_pos.x, circle_pos.y, 10);
circle_pos.x++;
SDL_RenderPresent(renderer);
SDL_Delay(16);