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