From a90db3b7b6e87e24c789b5db222f1cef92809bde Mon Sep 17 00:00:00 2001 From: Thomas Guillermo Albers Raviola Date: Fri, 16 Jan 2026 19:38:33 +0100 Subject: Initial commit --- progress/src/main.c | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 progress/src/main.c (limited to 'progress/src/main.c') 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; +} -- cgit v1.2.3