aboutsummaryrefslogtreecommitdiff
path: root/progress/src/main.c
diff options
context:
space:
mode:
authorThomas Guillermo Albers Raviola <thomas@thomaslabs.org>2026-01-16 19:38:33 +0100
committerThomas Guillermo Albers Raviola <thomas@thomaslabs.org>2026-01-16 19:38:33 +0100
commita90db3b7b6e87e24c789b5db222f1cef92809bde (patch)
tree2096abcb1ac1ea970a51e598257186bc4e030b22 /progress/src/main.c
Initial commit
Diffstat (limited to 'progress/src/main.c')
-rw-r--r--progress/src/main.c146
1 files changed, 146 insertions, 0 deletions
diff --git a/progress/src/main.c b/progress/src/main.c
new file mode 100644
index 0000000..04dfc1a
--- /dev/null
+++ b/progress/src/main.c
@@ -0,0 +1,146 @@
+#include "main.h"
+#define FRAME_VALUES 10
+
+void gravity(GameState *gameState)
+{
+ gameState->player1.y += gameState->player1.dy;
+ gameState->player1.dy += GRAVEDAD;
+ //gameState->player2.y += gameState->player2.dy;
+ //gameState->player2.dy += GRAVEDAD;
+}
+
+Uint32 frametimes[FRAME_VALUES];
+
+Uint32 frametimelast;
+
+Uint32 framecount;
+
+float framespersecond;
+
+void fpsinit() {
+ memset(frametimes, 0, sizeof(frametimes));
+ framecount = 0;
+ framespersecond = 0;
+ frametimelast = SDL_GetTicks();
+
+}
+
+void fpsthink() {
+
+ Uint32 frametimesindex;
+ Uint32 getticks;
+ Uint32 count;
+ Uint32 i;
+
+ frametimesindex = framecount % FRAME_VALUES;
+
+ getticks = SDL_GetTicks();
+
+ frametimes[frametimesindex] = getticks - frametimelast;
+
+ frametimelast = getticks;
+
+ framecount++;
+
+ if (framecount < FRAME_VALUES) {
+
+ count = framecount;
+
+ } else {
+
+ count = FRAME_VALUES;
+
+ }
+
+ framespersecond = 0;
+ for (i = 0; i < count; i++) {
+
+ framespersecond += frametimes[i];
+
+ }
+
+ framespersecond /= count;
+
+ framespersecond = 1000.f / framespersecond;
+
+}
+
+
+int main()
+{
+ GameState gameState;
+ SDL_Window *window = NULL; // Declare a window
+ SDL_Renderer *renderer = NULL; // Declare a renderer
+ SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO); // Initialize SDL2
+
+ declaraciones(&gameState);
+
+ //Create an application window with the following settings:
+ window = SDL_CreateWindow("HighNoon", // window title
+ SDL_WINDOWPOS_UNDEFINED, // initial x position
+ SDL_WINDOWPOS_UNDEFINED, // initial y position
+ 640, // width, in pixels
+ 480, // height, in pixels
+ 0 // flags
+ );
+ renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);// | SDL_RENDERER_PRESENTVSYNC);
+
+ if(window == NULL || renderer == NULL)
+ {
+ printf("SDL no pudo ejecutarse o no esta instalado");
+ }
+ TTF_Init();
+ gameState.renderer = renderer;
+ Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 4096);
+ loadScreen(&gameState,renderer);
+ // The window is open: enter program loop (see SDL_PollEvent)
+ int menu_done = 0;
+ gameState.done = 0;
+ while(!menu_done)
+ {
+ menu_done = menu_events(window,&gameState);
+ menu_render(renderer, &gameState);
+ }
+
+ fpsinit();
+ ///Event loop
+ while(!gameState.done)
+ {
+ ///Check for events
+ gameState.done = processEvents(window, &gameState);
+ ///Ejecutar gravedad
+ gravity(&gameState);
+ ///Deteccion de Coliciones (Objetos)
+ collisionDetect(&gameState);
+ ///Render display
+ doRender(renderer, &gameState);
+ ///Trabaja los Sprites
+ spriteUpdate(&gameState);
+ ///Balas
+ processBullet(&gameState);
+ ///Deteccion de Coliciones (Balas)
+ bulletCollision(&gameState);
+ fpsthink();
+ printf("%f\n", framespersecond);
+ }
+ ///Limpia balas
+ for(int i = 0; i < MAX_BULLETS; i++)
+ removeBullet(i, &gameState);
+
+ SDL_DestroyTexture(gameState.player1Texture);
+ SDL_DestroyTexture(gameState.player2Texture);
+ SDL_DestroyTexture(gameState.ladrilloTexture);
+ SDL_DestroyTexture(gameState.balaTexture);
+ SDL_DestroyTexture(gameState.menuTexture);
+ SDL_DestroyTexture(gameState.gameOver);
+ SDL_DestroyTexture(gameState.backGround);
+ Mix_FreeChunk(gameState.disparo);
+ TTF_CloseFont(gameState.font);
+ // Close and destroy the window
+ SDL_DestroyWindow(window);
+ SDL_DestroyRenderer(renderer);
+ TTF_Quit();
+ // Clean up
+ SDL_Quit();
+ return 0;
+}