fork download
  1. #include "SDL.h"
  2.  
  3. namespace Input
  4. {
  5. class Keyboard
  6. {
  7. public:
  8. class Key
  9. {
  10. public:
  11. friend Keyboard;
  12.  
  13. enum Type
  14. {
  15. TYPE_UP,
  16. TYPE_DOWN,
  17. TYPE_LEFT,
  18. TYPE_RIGHT,
  19. TYPE_RETURN,
  20. TYPE_ESCAPE,
  21. TYPE_SPACE,
  22. TYPE_A,
  23. TYPE_B,
  24. TYPE_C,
  25. TYPE_F,
  26. TYPE_M,
  27. TYPE_N,
  28. TYPE_S,
  29. TYPE_V,
  30. TYPE_W,
  31. TYPE_Z,
  32. TYPE_COUNT
  33. };
  34.  
  35. private:
  36. int state;
  37.  
  38. public:
  39. bool isDown() const { return (state != 0); }
  40. bool isHit() const { return (state == 1); }
  41.  
  42. Key() :
  43. state(0)
  44. {
  45. }
  46. };
  47.  
  48. private:
  49. Key key[Key::TYPE_COUNT];
  50.  
  51. public:
  52. Key getKey(Key::Type type) const { return key[type]; }
  53.  
  54. void handle(const SDL_Event sdl_event);
  55. void initialize();
  56. };
  57.  
  58. void Keyboard::handle(const SDL_Event sdl_event)
  59. {
  60. if (sdl_event.type == SDL_KEYDOWN || sdl_event.type == SDL_KEYUP)
  61. {
  62. int sdlkey_equivalent = 0;
  63. for (auto sdlkey : { SDLK_UP, SDLK_DOWN, SDLK_LEFT, SDLK_RIGHT, SDLK_RETURN, SDLK_ESCAPE, SDLK_SPACE, SDLK_a, SDLK_b, SDLK_c, SDLK_f, SDLK_m, SDLK_n, SDLK_s, SDLK_v, SDLK_w, SDLK_z })
  64. {
  65. if (sdl_event.key.keysym.sym == sdlkey)
  66. {
  67. if (sdl_event.type == SDL_KEYDOWN)
  68. {
  69. key[sdlkey_equivalent].state = 1;
  70. }
  71. else if (sdl_event.type == SDL_KEYUP)
  72. {
  73. key[sdlkey_equivalent].state = 0;
  74. }
  75. }
  76. ++sdlkey_equivalent;
  77. }
  78. }
  79. }
  80. }
  81.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:1:17: fatal error: SDL.h: No such file or directory
 #include "SDL.h"
                 ^
compilation terminated.
stdout
Standard output is empty