Skip to content

Instantly share code, notes, and snippets.

@jrdmcgr
Created October 31, 2013 16:49
Show Gist options
  • Save jrdmcgr/7253017 to your computer and use it in GitHub Desktop.
Save jrdmcgr/7253017 to your computer and use it in GitHub Desktop.
Move a red square around with the arrow keys.
#include "SDL2/SDL.h"
#include <stdio.h>
void clear(SDL_Renderer * renderer) {
SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
}
void draw(SDL_Renderer * renderer, SDL_Rect * rect) {
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
SDL_RenderFillRect(renderer, rect);
SDL_RenderPresent(renderer);
}
int main(int argc, char* argv[]) {
SDL_Window *window;
SDL_Renderer *renderer;
SDL_Init(SDL_INIT_VIDEO);
window = SDL_CreateWindow(
"An SDL2 window",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640,
480,
SDL_WINDOW_OPENGL
);
if (window == NULL) {
printf("Could not create window: %s\n", SDL_GetError());
return 1;
}
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (renderer == NULL) {
printf("Could not create window: %s\n", SDL_GetError());
return 1;
}
SDL_Rect rectangle = {
.x = 10,
.y = 10,
.w = 10,
.h = 10
};
clear(renderer);
int quit = 0;
while (!quit) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_KEYDOWN) {
// Handle arrow keys
switch(event.key.keysym.scancode) {
case SDL_SCANCODE_LEFT:
rectangle.x -= 10;
break;
case SDL_SCANCODE_RIGHT:
rectangle.x +=10;
break;
case SDL_SCANCODE_UP:
rectangle.y -= 10;
break;
case SDL_SCANCODE_DOWN:
rectangle.y += 10;
break;
default:
break;
}
} else if (event.type == SDL_QUIT) {
quit = 1;
puts("QUIT!");
break;
}
}
clear(renderer);
draw(renderer, &rectangle);
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
@arkdracco
Copy link

Quero passar este repositório para meu android para testar sua funcionalidade no meu app Cxx, posso?

@AngeloGalav
Copy link

AngeloGalav commented Nov 8, 2023

The SDL_RenderPresent(renderer); call at line 8 causes the square to flicker. By removing that line, the flickering is also gone.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment