diff --git a/README.md b/README.md index 140b256..b9b1c43 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ I wanted a project to learn C and the SDL framework in, and settled upon this game as I thought it was a simple and approachable project for me to execute. ### TODO: -- make a better input system (one that doesn't crash the game) - make beeping sound effects - make the game freeze when you lost instead of closing - fix constants in level colision detection diff --git a/src/level.c b/src/level.c index 381baaa..7327a84 100644 --- a/src/level.c +++ b/src/level.c @@ -48,12 +48,12 @@ void level_init(Level* level) { } //updates the level -void level_update(Level* level, bool* keys) { +void level_update(Level* level, const Uint8* keys) { Bouncer* bouncer = &level->bouncer; Ball* ball = &level->ball; // if move bouncer LEFT - if (keys[SDLK_a]) { + if (keys[SDL_SCANCODE_A] || keys[SDL_SCANCODE_LEFT]) { ball->moving = true; if (bouncer->pos.x < 0 == false) { @@ -62,7 +62,7 @@ void level_update(Level* level, bool* keys) { } // if move bouncer RIGHT - if (keys[SDLK_d]) { + if (keys[SDL_SCANCODE_D] || keys[SDL_SCANCODE_RIGHT]) { ball->moving = true; if ((bouncer->pos.x + bouncer->width) > SCREEN_WIDTH == false) { diff --git a/src/level.h b/src/level.h index 67a7b20..2953b64 100644 --- a/src/level.h +++ b/src/level.h @@ -32,4 +32,4 @@ typedef struct { void level_init(Level* level); -void level_update(Level* level, bool* keys); +void level_update(Level* level, const Uint8* keys); diff --git a/src/main.c b/src/main.c index 5e2e743..435ec11 100644 --- a/src/main.c +++ b/src/main.c @@ -17,7 +17,7 @@ static int init(SDL_Window** window, SDL_Renderer** renderer, Level* level) { } // called on each game update -static bool update(Level* level, bool* keys, RenderData* render_data) { +static bool update(Level* level, const Uint8* keys, RenderData* render_data) { const clock_t clock_start = clock(); //update the event keys @@ -28,13 +28,6 @@ static bool update(Level* level, bool* keys, RenderData* render_data) { case SDL_QUIT: return false; break; - - case SDL_KEYDOWN: - keys[e.key.keysym.sym] = true; - break; - case SDL_KEYUP: - keys[e.key.keysym.sym] = false; - break; } } } @@ -71,7 +64,6 @@ int main(void) { Level level = { 0 }; //stores the game's state SDL_Window* window = NULL; //the window that is given to the OS SDL_Renderer* renderer = NULL; //the renderer used to draw to the window - bool keys[322] = { 0 }; //stores the key states TODO: find a better method than to use 322 bytes // initialize { @@ -85,7 +77,7 @@ int main(void) { // game-loop RenderData render_data = { window, renderer, &level }; //contains the data which is used to render the game - while (update(&level, keys, &render_data) && (level.stop == false)); + while (update(&level, SDL_GetKeyboardState(NULL), &render_data) && (level.stop == false)); // frees media and shuts down SDL close(window, renderer);