6 #include "./platforms.h"
8 #define SCREEN_WIDTH 800
9 #define SCREEN_HEIGHT 600
11 #define GROUND_LEVEL 200.0f
13 int main(int argc, char *argv[])
17 if (SDL_Init(SDL_INIT_VIDEO) < 0) {
18 fprintf(stderr, "Could not initialize SDL: %s", SDL_GetError());
23 SDL_Window *window = SDL_CreateWindow("Nothing",
25 SCREEN_WIDTH, SCREEN_HEIGHT,
28 fprintf(stderr, "Could not create SDL window: %s", SDL_GetError());
30 goto sdl_create_window_fail;
33 SDL_Renderer *renderer = SDL_CreateRenderer(window, -1,
34 SDL_RENDERER_ACCELERATED |
35 SDL_RENDERER_PRESENTVSYNC);
36 if (renderer == NULL) {
37 fprintf(stderr, "Could not create SDL renderer: %s", SDL_GetError());
39 goto sdl_create_renderer_fail;
42 struct player_t *player = create_player(100.0f, 0.0f);
44 perror("Could not create player");
46 goto create_player_fail;
49 const struct rect_t platforms_rects[] = {
51 .y = GROUND_LEVEL + 50.0f,
55 .y = GROUND_LEVEL + 50.0f,
56 .w = SCREEN_WIDTH - 150.0f,
59 .y = GROUND_LEVEL + 100.0f,
63 .y = GROUND_LEVEL + 100.0f,
67 .y = GROUND_LEVEL + 150.0f,
71 .y = GROUND_LEVEL + 150.0f,
75 struct platforms_t *platforms = create_platforms(
77 sizeof(platforms_rects) / sizeof(struct rect_t));
78 if (platforms == NULL) {
79 perror("Could not create platforms");
81 goto create_platforms_fail;
86 const Uint8 *keyboard_state = SDL_GetKeyboardState(NULL);
87 const Uint32 delay_ms = (Uint32) roundf(1000.0f / GAME_FPS);
90 while (SDL_PollEvent(&e)) {
97 switch (e.key.keysym.sym) {
106 if (keyboard_state[SDL_SCANCODE_A]) {
107 player_move_left(player);
108 } else if (keyboard_state[SDL_SCANCODE_D]) {
109 player_move_right(player);
114 update_player(player, platforms, delay_ms);
116 SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
117 SDL_RenderClear(renderer);
118 render_player(player, renderer);
119 render_platforms(platforms, renderer);
120 SDL_RenderPresent(renderer);
124 destroy_platforms(platforms);
125 create_platforms_fail:
126 destroy_player(player);
128 SDL_DestroyRenderer(renderer);
129 sdl_create_renderer_fail:
130 SDL_DestroyWindow(window);
131 sdl_create_window_fail: