fork download
  1. #include <SDL.h>
  2. #include <SDL_image.h>
  3.  
  4.  
  5. #include <iostream>
  6. #include <string>
  7.  
  8.  
  9.  
  10. // Блок описания констант и прочего. Глобальных
  11. const int SCREEN_WIDTH = 640;
  12. const int SCREEN_HEIGHT = 480;
  13. //Будем использовать тайлы
  14. const int TILE_SIZE = 40;
  15.  
  16. //Глобальными объявлениями окна и рендерера, чтобы они были доступны из наших функций. Так же мы инициализируем указатели как nullptr для безопасности.
  17. //Если вы не используете C++11, инициализируйте их как NULL
  18. SDL_Window *window = nullptr; //
  19. SDL_Renderer *renderer = nullptr;
  20.  
  21.  
  22. void Initialize(){
  23. std::cout << " INITIALIZATION!!!!" << std::endl;
  24. // По идее здесь нужно загрузить текстуры и все что будем использовать в игре
  25.  
  26.  
  27.  
  28. };
  29.  
  30.  
  31. void Events(){
  32. std::cout << " EVENTALIZATION!!!!" << std::endl;
  33.  
  34. };
  35.  
  36. void Loop(){
  37. std::cout << " LOOPALIZATION!!!!" << std::endl;
  38.  
  39. };
  40.  
  41. void Render(){
  42. std::cout << " RENDERALIZATION!!!!" << std::endl;
  43.  
  44. };
  45.  
  46. void Cleanup(){
  47. std::cout << " CLEANUPTION!!!!" << std::endl;
  48.  
  49. };
  50.  
  51. int main(int argc, char *argv[]){
  52.  
  53. if (SDL_Init(SDL_INIT_EVERYTHING) == -1){
  54. std::cout << SDL_GetError() << std::endl;
  55. return 1;
  56. }
  57. if ((IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG) != IMG_INIT_PNG){
  58. //logSDLError(std::cout, "IMG_Init");
  59. std::cout << SDL_GetError() << std::endl;
  60. SDL_Quit();
  61. return 1;
  62. }
  63.  
  64. std::cout << "works!" << std::endl;
  65.  
  66.  
  67.  
  68. Initialize();
  69. int i = 0;
  70.  
  71. // Походу надо будет это в INTIALIZE засунуть и возвращать цказатель на созданный в INITIALIZE объект. Либо создавать глобальные переменные в функции.
  72.  
  73. // создаем окно. Указатель типа SDL_Window, получает видимо ссылку на объект окна со свойствами заданными конструктором
  74. window = SDL_CreateWindow("Game1",500,200,SCREEN_WIDTH,SCREEN_HEIGHT,SDL_WINDOW_SHOWN);
  75.  
  76. // Теперь надо загрузить в память картинку. Затем ее превратить в текстуру, и затем ее записать в рендер и затем ее вывести в рендере
  77. // Используя библиотеку SDL_image можно сразу загрузить в текстуру. функцией IMG_LoadTexture
  78.  
  79. // создадим рендерер
  80. // запустим инициализированный нами рендерер
  81. renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); // надо бы про параметры описать
  82. //вернем ошибку если не получилось
  83. if (renderer == nullptr){
  84. std::cout << SDL_GetError() << std::endl;
  85. return 3;
  86. }
  87. // запустим постоянный путь к текстуре
  88. const std::string filepath = "./res/circles.png";
  89.  
  90. SDL_Texture *texture = IMG_LoadTexture(renderer,filepath.c_str());
  91. // Обработка ошибки
  92. if (texture == nullptr){
  93. std::cout << " Error with LoadTexture!!!!" << std::endl;
  94. }
  95.  
  96. // теперь создали текстуру и надо ее засунуть в рендер
  97. // Мы сделаем такую конструкцию. Что нашу текстуру мы поставим на позицию х,у в нашем рендере и отоброзим нужную нам часть текстуры w,h,
  98. SDL_Rect displ;
  99. displ.x = 0;
  100. displ.y = 0;
  101. displ.w =100;
  102. displ.h =100;
  103.  
  104.  
  105.  
  106. int clipW = 100, clipH = 100;
  107. SDL_Rect clip[4];
  108.  
  109. for (int j = 0; j < 4; j++){
  110. clip[j].x = ( (int) (j/2)) *clipW;
  111. clip[j].y = ( (int) (j%2)) *clipH;
  112.  
  113. std::cout << (j / 2) << " " <<(j% 2) << std::endl;
  114. clip[j].w = clipW;
  115. clip[j].h = clipH;
  116. };
  117.  
  118.  
  119. // записать нашу текстуру в рендер
  120. //SDL_RenderCopy(renderer, texture, NULL,&displ);
  121. for (int j = 0; j < 4; j++){
  122. SDL_RenderCopy(renderer, texture, &clip[j], &displ);
  123. std::cout << clip[j].x << " " << clip[j].y << " " << clip[j].w << " " << clip[j].h << " " << std::endl;
  124. SDL_RenderPresent(renderer);
  125.  
  126. SDL_RenderClear(renderer);
  127. SDL_Delay(2000);
  128. };
  129.  
  130.  
  131. while (true) {
  132. Events();
  133. Loop();
  134. Render();
  135. i++;
  136. if (i == 1) {
  137. break;
  138. };
  139. }
  140.  
  141. Cleanup();
  142.  
  143. return 0;
  144. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:1:17: fatal error: SDL.h: No such file or directory
 #include <SDL.h>
                 ^
compilation terminated.
stdout
Standard output is empty