#include #include void drawPaddle(SDL_Renderer *renderer, int paddleX, int paddleWidth); int main(void) { /* * RETURN CODES * 0: Success * 1: SDL init fail * 2: Error creating Window * 3: Error creating renderer * */ /* ---------------- * SDL Init * ---------------- */ if (SDL_Init(SDL_INIT_EVERYTHING)!=0) { perror("[FAILED] Initialising SLD"); return 1; } int go; //Var for loop control /* ---------------- * Main Window * ---------------- * Create the main output Window for SDL */ // Window vars int winPosX = 100; int winPosY = 100; int winWidth = 640; int winHeight = 480; SDL_Window *window1 = SDL_CreateWindow( "Main Window", winPosX, winPosY, winWidth, winHeight, SDL_WINDOW_SHOWN ); if (window1==NULL) { perror("[FAILED] Creating Window window1"); return 2; //Error creating Window } /* * ---------------- * Renderer * ---------------- * Creates the main renderer (tied to main window) */ SDL_Renderer * renderer1 = SDL_CreateRenderer(window1, -1, 0); if (renderer1==NULL) { perror("[FAILED] Creating renderer renderer1 for window1"); return 3; } /* * ---------------- * Game variables * ---------------- */ char moveX=0; int paddleWidth=100; int paddleX=(winWidth/2)-(paddleWidth/2); SDL_SetRenderDrawColor(renderer1, 0x22, 0x22, 0x22, 0xFF); //RGBA SDL_RenderClear(renderer1); go=1; while(go) { /* * ---------------- * Event handling * ---------------- */ SDL_Event incomingEvent; while (SDL_PollEvent(&incomingEvent)) { switch (incomingEvent.type) { case SDL_QUIT: // User requested program quit - e.g. window close go=0; break; case SDL_KEYDOWN: switch(incomingEvent.key.keysym.sym) { case SDLK_ESCAPE: go=0; break; case SDLK_LEFT: moveX=-1; break; case SDLK_RIGHT: moveX=1; break; } break; case SDL_KEYUP: switch(incomingEvent.key.keysym.sym) { case SDLK_LEFT: moveX=0; break; case SDLK_RIGHT: moveX=0; break; } break; } } paddleX+=moveX*1; /* * ---------------- * Draw to buffer * ---------------- */ SDL_SetRenderDrawColor(renderer1, 0x22, 0x22, 0x22, 0xFF); //RGBA SDL_RenderClear(renderer1); drawPaddle(renderer1, paddleX, paddleWidth); /* * -------------------------------- * Output to Window * -------------------------------- */ SDL_RenderPresent(renderer1); SDL_Delay(6); } /* * -------------------------------- * Clean up after ourselves * -------------------------------- */ SDL_DestroyWindow(window1); SDL_Quit(); return 0; } void drawPaddle(SDL_Renderer *renderer, int paddleX, int paddleWidth) { SDL_SetRenderDrawColor(renderer, 0x66, 0x66, 0x66, 0xFF); for (int i=paddleX; i<(paddleX+paddleWidth); i++) { for (int j=0; j<10; j++) { SDL_RenderDrawPoint(renderer,i,j+480-20); } } }