rectangles.c (2031B)
1 /* 2 * rectangles.c 3 * written by Holmes Futrell 4 * use however you want 5 */ 6 7 #include "SDL.h" 8 #include <time.h> 9 #include "common.h" 10 11 void 12 render(SDL_Renderer *renderer) 13 { 14 Uint8 r, g, b; 15 int renderW; 16 int renderH; 17 18 SDL_RenderGetLogicalSize(renderer, &renderW, &renderH); 19 20 /* Come up with a random rectangle */ 21 SDL_Rect rect; 22 rect.w = randomInt(64, 128); 23 rect.h = randomInt(64, 128); 24 rect.x = randomInt(0, renderW); 25 rect.y = randomInt(0, renderH); 26 27 /* Come up with a random color */ 28 r = randomInt(50, 255); 29 g = randomInt(50, 255); 30 b = randomInt(50, 255); 31 32 /* Fill the rectangle in the color */ 33 SDL_SetRenderDrawColor(renderer, r, g, b, 255); 34 SDL_RenderFillRect(renderer, &rect); 35 36 /* update screen */ 37 SDL_RenderPresent(renderer); 38 } 39 40 int 41 main(int argc, char *argv[]) 42 { 43 44 SDL_Window *window; 45 SDL_Renderer *renderer; 46 int done; 47 SDL_Event event; 48 int windowW; 49 int windowH; 50 51 /* initialize SDL */ 52 if (SDL_Init(SDL_INIT_VIDEO) < 0) { 53 fatalError("Could not initialize SDL"); 54 } 55 56 /* seed random number generator */ 57 srand(time(NULL)); 58 59 /* create window and renderer */ 60 window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_ALLOW_HIGHDPI); 61 if (window == 0) { 62 fatalError("Could not initialize Window"); 63 } 64 renderer = SDL_CreateRenderer(window, -1, 0); 65 if (!renderer) { 66 fatalError("Could not create renderer"); 67 } 68 69 SDL_GetWindowSize(window, &windowW, &windowH); 70 SDL_RenderSetLogicalSize(renderer, windowW, windowH); 71 72 /* Fill screen with black */ 73 SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); 74 SDL_RenderClear(renderer); 75 76 /* Enter render loop, waiting for user to quit */ 77 done = 0; 78 while (!done) { 79 while (SDL_PollEvent(&event)) { 80 if (event.type == SDL_QUIT) { 81 done = 1; 82 } 83 } 84 render(renderer); 85 SDL_Delay(1); 86 } 87 88 /* shutdown SDL */ 89 SDL_Quit(); 90 91 return 0; 92 }