feat: split code
This commit is contained in:
9
include/gfx.hpp
Normal file
9
include/gfx.hpp
Normal 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
30
src/gfx/circle.cpp
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
37
src/main.cpp
37
src/main.cpp
@@ -4,6 +4,7 @@
|
|||||||
#include <SDL3/SDL_timer.h>
|
#include <SDL3/SDL_timer.h>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include "../include/gfx.hpp"
|
||||||
|
|
||||||
bool key_event(SDL_Event e) {
|
bool key_event(SDL_Event e) {
|
||||||
if (e.type == SDL_EVENT_KEY_DOWN) {
|
if (e.type == SDL_EVENT_KEY_DOWN) {
|
||||||
@@ -26,33 +27,6 @@ bool event_handling(SDL_Event e) {
|
|||||||
return false;
|
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() {
|
int main() {
|
||||||
if (!SDL_Init(SDL_INIT_VIDEO)){
|
if (!SDL_Init(SDL_INIT_VIDEO)){
|
||||||
std::printf("SDL_INIT() failed");
|
std::printf("SDL_INIT() failed");
|
||||||
@@ -61,8 +35,15 @@ int main() {
|
|||||||
|
|
||||||
SDL_Window *window;
|
SDL_Window *window;
|
||||||
window = SDL_CreateWindow("Physics Sim", 720, 540, SDL_WINDOW_RESIZABLE);
|
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);
|
SDL_Renderer *renderer = SDL_CreateRenderer(window, NULL);
|
||||||
|
if (renderer == NULL) {
|
||||||
|
std::printf("SDL_CreateRenderer() failed");
|
||||||
|
}
|
||||||
|
|
||||||
SDL_Event e;
|
SDL_Event e;
|
||||||
|
|
||||||
@@ -76,7 +57,7 @@ int main() {
|
|||||||
exit = event_handling(e);
|
exit = event_handling(e);
|
||||||
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
|
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
|
||||||
SDL_RenderClear(renderer);
|
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++;
|
circle_pos.x++;
|
||||||
SDL_RenderPresent(renderer);
|
SDL_RenderPresent(renderer);
|
||||||
SDL_Delay(16);
|
SDL_Delay(16);
|
||||||
|
|||||||
Reference in New Issue
Block a user