aboutsummaryrefslogtreecommitdiff
path: root/progress/src/main.c
blob: 04dfc1addaa8bf272a4cb327d3212cc887e11fd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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;
}