From 78e5bd2e622204d0deab252d9b2ab90c3095b67d Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sat, 30 Jan 2021 05:30:22 -0500 Subject: Player character can move now --- src/main.cpp | 41 ++++++++++++++++++++++++++++++++++++----- src/sprite.h | 4 ++++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e91f8f0..8bd7f89 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,20 +4,51 @@ void loop(Renderer& renderer) { Game game; - game.addSprite(Sprite("../res/lucas.png", renderer)); + int playerSpriteId = game.addSprite(Sprite("../res/lucas.png", renderer)); renderer.render(game); + size_t inputDt = 50; + size_t inputAcc = 0; + + size_t lastTime = SDL_GetTicks(); + for (;;) { + size_t currentTime = SDL_GetTicks(); + size_t frameTime = currentTime - lastTime; + lastTime = currentTime; + SDL_Event e; - while (SDL_PollEvent(&e)) - { - if (e.type == SDL_QUIT) - { + while (SDL_PollEvent(&e)) { + if (e.type == SDL_QUIT) { return; } } + Sprite& playerSprite = game.getSprite(playerSpriteId); + const Uint8* state = SDL_GetKeyboardState(NULL); + + inputAcc += frameTime; + while (inputAcc > inputDt) { + inputAcc -= inputDt; + + if (state[SDL_SCANCODE_LEFT]) { + playerSprite.setX(playerSprite.getX()-8); + } + + if (state[SDL_SCANCODE_RIGHT]) { + playerSprite.setX(playerSprite.getX()+8); + } + + if (state[SDL_SCANCODE_UP]) { + playerSprite.setY(playerSprite.getY()-8); + } + + if (state[SDL_SCANCODE_DOWN]) { + playerSprite.setY(playerSprite.getY()+8); + } + } + renderer.render(game); } } diff --git a/src/sprite.h b/src/sprite.h index 3af9341..d868bdb 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -15,6 +15,10 @@ public: int getX() { return x_; } + void setX(int x) { x_ = x; } + + void setY(int y) { y_ = y; } + int getY() { return y_; } int getWidth() { return width_; } -- cgit 1.4.1