#include #include #include #include struct render_data { SDL_Renderer* renderer; SDL_Window* window; }; struct render_data* render_init(int width, int height) { // Initialize SDL2 struct render_data* data = malloc(sizeof(struct render_data)); memset(data, 0, sizeof(struct render_data)); printf("Start initializing SDL2\n"); if (SDL_Init(SDL_INIT_EVERYTHING) != 0) fprintf(stderr, "Could not initialize SDL2: '%s'\n", SDL_GetError()); data->window = SDL_CreateWindow("Pong", 50, 50, width, height, SDL_WINDOW_SHOWN); if (!data->window) fprintf(stderr, "Could not create window: '%s'\n", SDL_GetError()); data->renderer = SDL_CreateRenderer(data->window, -1, SDL_RENDERER_PRESENTVSYNC); printf("Finished initializing SDL2\n"); return data; } static void player_render(struct player* player, struct render_data* data) { SDL_Rect rect; rect.x = player->x_location; rect.y = player->y_location; rect.w = PLAYER_WIDTH; rect.h = PLAYER_HEIGHT; SDL_SetRenderDrawColor(data->renderer, 0xFF, 0xFF, 0xFF, 0xFF); SDL_RenderDrawRect(data->renderer, &rect); } static void ball_render(struct ball* ball, struct render_data* data) { SDL_Rect rect; rect.x = ball->x_location; rect.y = ball->y_location; rect.w = ball->width; rect.h = ball->width; SDL_SetRenderDrawColor(data->renderer, 0xFF, 0xFF, 0xFF, 0xFF); SDL_RenderDrawRect(data->renderer, &rect); } void render(struct game_data* game) { // Clear the screen of the game SDL_SetRenderDrawColor(game->render_data->renderer, 0, 0, 0, 0xFF); SDL_RenderClear(game->render_data->renderer); player_render(game->player1, game->render_data); player_render(game->player2, game->render_data); ball_render(game->ball, game->render_data); // Show the newly rendered screen SDL_RenderPresent(game->render_data->renderer); }