Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <SDL/SDL.h>
- #include <time.h>
- #define GG_UP SDLK_UP
- #define GG_DOWN SDLK_DOWN
- #define GG_LEFT SDLK_LEFT
- #define GG_RIGHT SDLK_RIGHT
- #define GG_A SDLK_LCTRL
- #define GG_B SDLK_LALT
- #define GG_X SDLK_SPACE
- #define GG_Y SDLK_LSHIFT
- #define GG_START SDLK_RETURN
- #define GG_SELECT SDLK_ESCAPE
- #define GG_LS SDLK_TAB
- #define GG_RS SDLK_BACKSPACE
- #define KI_UP 0
- #define KI_DOWN 1
- #define KI_LEFT 2
- #define KI_RIGHT 3
- #define KI_A 4
- #define KI_B 5
- #define KI_X 6
- #define KI_Y 7
- #define KI_START 8
- #define KI_SELECT 9
- #define KI_LS 10
- #define KI_RS 11
- int x = 0, y = 0;
- int main()
- {
- srand(time(NULL));
- SDL_Init(SDL_INIT_EVERYTHING);
- SDL_ShowCursor(SDL_DISABLE);
- SDL_Event e;
- Uint8 keys[12] = {0};
- SDL_Surface *screen = SDL_SetVideoMode(320, 240, 16, SDL_SWSURFACE);
- int c_up = SDL_MapRGB(screen->format, 60, 60, 60);
- int c_down = SDL_MapRGB(screen->format, 30, 100, 230);
- int quit = 0;
- while (!quit)
- {
- while (SDL_PollEvent(&e))
- {
- switch (e.type)
- {
- case SDL_KEYDOWN:
- switch (e.key.keysym.sym)
- {
- case GG_UP: keys[KI_UP] = 1; break;
- case GG_LEFT: keys[KI_LEFT] = 1; break;
- case GG_RIGHT: keys[KI_RIGHT] = 1; break;
- case GG_DOWN: keys[KI_DOWN] = 1; break;
- case GG_X: keys[KI_X] = 1; break;
- case GG_Y: keys[KI_Y] = 1; break;
- case GG_A: keys[KI_A] = 1; break;
- case GG_B: keys[KI_B] = 1; break;
- case GG_LS: keys[KI_LS] = 1; break;
- case GG_RS: keys[KI_RS] = 1; break;
- case GG_SELECT: keys[KI_SELECT] = 1; break;
- case GG_START: keys[KI_START] = 1; break;
- default: break;
- }
- break;
- case SDL_KEYUP:
- switch (e.key.keysym.sym)
- {
- case GG_UP: keys[KI_UP] = 0; break;
- case GG_LEFT: keys[KI_LEFT] = 0; break;
- case GG_RIGHT: keys[KI_RIGHT] = 0; break;
- case GG_DOWN: keys[KI_DOWN] = 0; break;
- case GG_X: keys[KI_X] = 0; break;
- case GG_Y: keys[KI_Y] = 0; break;
- case GG_A: keys[KI_A] = 0; break;
- case GG_B: keys[KI_B] = 0; break;
- case GG_LS: keys[KI_LS] = 0; break;
- case GG_RS: keys[KI_RS] = 0; break;
- case GG_SELECT: keys[KI_SELECT] = 0; break;
- case GG_START: keys[KI_START] = 0; break;
- default: break;
- }
- break;
- default: break;
- }
- }
- SDL_FillRect(screen, NULL, 0);
- SDL_Rect r;
- r.w = r.h = 20;
- r.x = 50;
- r.y = 100;
- SDL_FillRect(screen, &r, keys[KI_UP] ? c_down : c_up);
- r.x = 30;
- r.y = 120;
- SDL_FillRect(screen, &r, keys[KI_LEFT] ? c_down : c_up);
- r.x = 70;
- SDL_FillRect(screen, &r, keys[KI_RIGHT] ? c_down : c_up);
- r.x = 50;
- r.y = 140;
- SDL_FillRect(screen, &r, keys[KI_DOWN] ? c_down : c_up);
- r.x = 250;
- r.y = 100;
- SDL_FillRect(screen, &r, keys[KI_Y] ? c_down : c_up);
- r.x = 230;
- r.y = 120;
- SDL_FillRect(screen, &r, keys[KI_X] ? c_down : c_up);
- r.x = 270;
- SDL_FillRect(screen, &r, keys[KI_B] ? c_down : c_up);
- r.x = 250;
- r.y = 140;
- SDL_FillRect(screen, &r, keys[KI_A] ? c_down : c_up);
- r.w = 60;
- r.h = 5;
- r.x = 30;
- r.y = 50;
- SDL_FillRect(screen, &r, keys[KI_LS] ? c_down : c_up);
- r.x = 230;
- SDL_FillRect(screen, &r, keys[KI_RS] ? c_down : c_up);
- r.w = 25;
- r.y = 65;
- SDL_FillRect(screen, &r, keys[KI_SELECT] ? c_down : c_up);
- r.x = 265;
- SDL_FillRect(screen, &r, keys[KI_START] ? c_down : c_up);
- if (keys[KI_X] && keys[KI_LS] && keys[KI_RS])
- quit = 1;
- SDL_Flip(screen);
- SDL_Delay(10);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement