162 lines
3.3 KiB
C
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);
|
|
}
|
|
}
|
|
}
|