El jugador ya empieza a moverse

This commit is contained in:
2022-08-12 12:29:35 +02:00
parent 2740ae9b7e
commit 0afc0cf629
4 changed files with 55 additions and 3 deletions

View File

@@ -11,7 +11,7 @@ Game::Game(SDL_Renderer *renderer, Asset *asset, Screen *screen, Input *input)
eventHandler = new SDL_Event(); eventHandler = new SDL_Event();
map = new Map(asset->get("01.map"), renderer, asset); map = new Map(asset->get("01.map"), renderer, asset);
player = new Player(renderer, asset); player = new Player(renderer, asset, input);
} }
// Destructor // Destructor
@@ -72,6 +72,8 @@ void Game::update()
break; break;
} }
} }
player->update();
} }
} }

View File

@@ -6,10 +6,11 @@
#define BASE_SPEED 0.5; #define BASE_SPEED 0.5;
// Constructor // Constructor
Player::Player(SDL_Renderer *renderer, Asset *asset) Player::Player(SDL_Renderer *renderer, Asset *asset, Input *input)
{ {
this->asset = asset; this->asset = asset;
this->renderer = renderer; this->renderer = renderer;
this->input = input;
sound_jump = JA_LoadSound(asset->get("sound_player_jump.wav").c_str()); sound_jump = JA_LoadSound(asset->get("sound_player_jump.wav").c_str());
sound_death = JA_LoadSound(asset->get("sound_player_death.wav").c_str()); sound_death = JA_LoadSound(asset->get("sound_player_death.wav").c_str());
@@ -60,6 +61,8 @@ Player::~Player()
// Actualiza todas las variables // Actualiza todas las variables
void Player::update() void Player::update()
{ {
checkInput();
sprite->update();
} }
// Dibuja el objeto // Dibuja el objeto
@@ -67,3 +70,23 @@ void Player::render()
{ {
sprite->render(); sprite->render();
} }
// Comprueba las entradas y modifica variables
void Player::checkInput()
{
// Solo comprueba las entradas de dirección cuando está de pie
if (input->checkInput(INPUT_LEFT, REPEAT_TRUE))
{
sprite->setVelX(-0.6f);
sprite->setFlip(SDL_FLIP_HORIZONTAL);
}
else if (input->checkInput(INPUT_RIGHT, REPEAT_TRUE))
{
sprite->setVelX(0.6f);
sprite->setFlip(SDL_FLIP_NONE);
}
else
{
sprite->setVelX(0);
}
}

View File

@@ -2,6 +2,7 @@
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#include "jail_audio.h" #include "jail_audio.h"
#include "utils.h" #include "utils.h"
#include "input.h"
#include "animatedsprite.h" #include "animatedsprite.h"
#include "asset.h" #include "asset.h"
@@ -14,6 +15,7 @@ class Player
private: private:
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
SDL_Renderer *renderer; // El renderizador de la ventana SDL_Renderer *renderer; // El renderizador de la ventana
Input *input; // Objeto Input para gestionar las entradas
AnimatedSprite *sprite; // Objeto con los graficos, animaciones y posición del jugador AnimatedSprite *sprite; // Objeto con los graficos, animaciones y posición del jugador
LTexture *texture; // Textura con los graficos del jugador LTexture *texture; // Textura con los graficos del jugador
@@ -40,9 +42,12 @@ private:
Uint8 lifes; // Cantidad de vidas Uint8 lifes; // Cantidad de vidas
Uint8 respawn_direction; // Dirección para revivir Uint8 respawn_direction; // Dirección para revivir
// Comprueba las entradas y modifica variables
void checkInput();
public: public:
// Constructor // Constructor
Player(SDL_Renderer *renderer, Asset *asset); Player(SDL_Renderer *renderer, Asset *asset, Input *input);
// Destructor // Destructor
~Player(); ~Player();

View File

@@ -30,6 +30,28 @@ Prog::Prog(std::string executablePath)
} }
input = new Input(asset->get("gamecontrollerdb.txt")); input = new Input(asset->get("gamecontrollerdb.txt"));
screen = new Screen(window, renderer, options); screen = new Screen(window, renderer, options);
// Controles
input->bindKey(INPUT_UP, SDL_SCANCODE_UP);
input->bindKey(INPUT_DOWN, SDL_SCANCODE_DOWN);
input->bindKey(INPUT_LEFT, SDL_SCANCODE_LEFT);
input->bindKey(INPUT_RIGHT, SDL_SCANCODE_RIGHT);
input->bindKey(INPUT_ACCEPT, SDL_SCANCODE_RETURN);
input->bindKey(INPUT_CANCEL, SDL_SCANCODE_ESCAPE);
input->bindKey(INPUT_BUTTON_1, SDL_SCANCODE_SPACE);
input->bindKey(INPUT_BUTTON_2, SDL_SCANCODE_D);
input->bindKey(INPUT_BUTTON_PAUSE, SDL_SCANCODE_ESCAPE);
input->bindKey(INPUT_BUTTON_ESCAPE, SDL_SCANCODE_ESCAPE);
input->bindGameControllerButton(INPUT_UP, SDL_CONTROLLER_BUTTON_DPAD_UP);
input->bindGameControllerButton(INPUT_DOWN, SDL_CONTROLLER_BUTTON_DPAD_DOWN);
input->bindGameControllerButton(INPUT_LEFT, SDL_CONTROLLER_BUTTON_DPAD_LEFT);
input->bindGameControllerButton(INPUT_RIGHT, SDL_CONTROLLER_BUTTON_DPAD_RIGHT);
input->bindGameControllerButton(INPUT_ACCEPT, SDL_CONTROLLER_BUTTON_B);
input->bindGameControllerButton(INPUT_CANCEL, SDL_CONTROLLER_BUTTON_A);
input->bindGameControllerButton(INPUT_BUTTON_1, SDL_CONTROLLER_BUTTON_B);
input->bindGameControllerButton(INPUT_BUTTON_PAUSE, SDL_CONTROLLER_BUTTON_GUIDE);
input->bindGameControllerButton(INPUT_BUTTON_ESCAPE, SDL_CONTROLLER_BUTTON_GUIDE);
} }
Prog::~Prog() Prog::~Prog()