162 lines
3.3 KiB
C

#ifdef _WIN32
#include <SDL.h>
#include <Windows.h>
#else
#include <SDL2/SDL.h>
#endif
#include <stdio.h>
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 SDL: ");
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) {
fprintf(stderr, "[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) {
fprintf(stderr, "[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);
}
}
}