#include #include using namespace std; const int WIDTH = 800, HEIGHT = 600; void drawCircle(int x, int y, int r, SDL_Renderer *renderer) { for (int w = 0; w < r * 2; w++) { for (int h = 0; h < r * 2; h++) { int dx = r - w; // horizontal offset int dy = r - h; // vertical offset if ((dx*dx + dy*dy) <= (r * r)) { SDL_RenderDrawPoint(renderer, x + dx, y + dy); } } } } int main (int argc, char *argv[] ){ SDL_Init(SDL_INIT_EVERYTHING); SDL_Window *window = SDL_CreateWindow("Pusheen cat", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT, SDL_WINDOW_ALLOW_HIGHDPI); SDL_Renderer *renderer = SDL_CreateRenderer(window, 1, SDL_RENDERER_ACCELERATED); if (NULL == window) { cout << "could not create window: " << SDL_GetError() << endl; return 1; } SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); // body SDL_RenderDrawLine(renderer, 100, 380, 80, 340); SDL_RenderDrawLine(renderer, 80, 340, 60, 280); SDL_RenderDrawLine(renderer, 60, 280, 60, 220); SDL_RenderDrawLine(renderer, 60, 220, 20, 180); SDL_RenderDrawLine(renderer, 20, 180, 10, 160); SDL_RenderDrawLine(renderer, 10, 160, 10, 140); SDL_RenderDrawLine(renderer, 10, 140, 20, 140); SDL_RenderDrawLine(renderer, 20, 140, 40, 140); SDL_RenderDrawLine(renderer, 40, 140, 60, 150); SDL_RenderDrawLine(renderer, 60, 150, 75, 155); SDL_RenderDrawLine(renderer, 75, 155, 110, 120); SDL_RenderDrawLine(renderer, 110, 120, 150, 100); SDL_RenderDrawLine(renderer, 150, 100, 170, 90); SDL_RenderDrawLine(renderer, 170, 90, 360, 90); SDL_RenderDrawLine(renderer, 360, 90, 380, 60); SDL_RenderDrawLine(renderer, 380, 60, 410, 90); SDL_RenderDrawLine(renderer, 410, 90, 480, 90); SDL_RenderDrawLine(renderer, 480, 90, 510, 60); SDL_RenderDrawLine(renderer, 510, 60, 540, 100); SDL_RenderDrawLine(renderer, 540, 100, 570, 180); SDL_RenderDrawLine(renderer, 570, 180, 580, 240); SDL_RenderDrawLine(renderer, 580, 240, 560, 300); SDL_RenderDrawLine(renderer, 560, 300, 520, 380); SDL_RenderDrawLine(renderer, 520, 380, 520, 390); SDL_RenderDrawLine(renderer, 520, 390, 510, 400); SDL_RenderDrawLine(renderer, 510, 400, 500, 390); SDL_RenderDrawLine(renderer, 500, 390, 500, 380); SDL_RenderDrawLine(renderer, 500, 380, 405, 380); SDL_RenderDrawLine(renderer, 405, 380, 400, 385); SDL_RenderDrawLine(renderer, 400, 385, 390, 400); SDL_RenderDrawLine(renderer, 390, 400, 380, 390); SDL_RenderDrawLine(renderer, 380, 390, 370, 380); SDL_RenderDrawLine(renderer, 370, 380, 260, 380); SDL_RenderDrawLine(renderer, 260, 380, 250, 390); SDL_RenderDrawLine(renderer, 250, 390, 240, 400); SDL_RenderDrawLine(renderer, 240, 400, 230, 390); SDL_RenderDrawLine(renderer, 230, 390, 220, 380); SDL_RenderDrawLine(renderer, 220, 380, 140, 380); SDL_RenderDrawLine(renderer, 140, 380, 130, 390); SDL_RenderDrawLine(renderer, 130, 390, 120, 400); SDL_RenderDrawLine(renderer, 120, 400, 110, 390); SDL_RenderDrawLine(renderer, 110, 390, 100, 380); // right whiskers SDL_RenderDrawLine(renderer, 550, 130, 590, 120); SDL_RenderDrawLine(renderer, 560, 150, 600, 140); // left whiskers SDL_RenderDrawLine(renderer, 340, 120, 380, 130); SDL_RenderDrawLine(renderer, 350, 140, 390, 150); // eyes drawCircle(420, 140, 10, renderer); drawCircle(520, 140, 10, renderer); // mouth SDL_RenderDrawLine(renderer, 470, 150, 470, 160); SDL_RenderDrawLine(renderer, 450, 175, 460, 170); SDL_RenderDrawLine(renderer, 460, 170, 470, 160); SDL_RenderDrawLine(renderer, 490, 175, 480, 170); SDL_RenderDrawLine(renderer, 480, 170, 470, 160); SDL_RenderPresent(renderer); SDL_Event windowEvent; while (true) { if (SDL_PollEvent(&windowEvent)) { if (SDL_QUIT == windowEvent.type) { break; } } } SDL_DestroyWindow(window); SDL_Quit(); return EXIT_SUCCESS; }