#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;
}