rectangles.c 1.8 KB

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