Implementar impulso direccional adaptativo para tecla ESPACIO

- Renombrar pushUpBalls() → pushBallsAwayFromGravity() con lógica direccional
- ESPACIO ahora impulsa en dirección opuesta a gravedad actual:
  * Gravedad DOWN → impulsa ARRIBA (comportamiento original)
  * Gravedad UP → impulsa ABAJO
  * Gravedad LEFT → impulsa DERECHA
  * Gravedad RIGHT → impulsa IZQUIERDA
- Corregir modVel() para aplicar impulso horizontal a todas las pelotas
- Actualizar documentación de controles en README.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-27 22:10:33 +02:00
parent 4e030e4ef9
commit 7ac29f899b
5 changed files with 35 additions and 13 deletions

View File

@@ -166,7 +166,7 @@ void Engine::handleEvents() {
break;
case SDLK_SPACE:
pushUpBalls();
pushBallsAwayFromGravity();
break;
case SDLK_G:
@@ -426,12 +426,32 @@ void Engine::setText() {
text_init_time_ = SDL_GetTicks();
}
void Engine::pushUpBalls() {
void Engine::pushBallsAwayFromGravity() {
for (auto &ball : balls_) {
const int SIGNO = ((rand() % 2) * 2) - 1;
const float VX = (((rand() % 20) + 10) * 0.1f) * SIGNO;
const float VY = ((rand() % 40) * 0.1f) + 5;
ball->modVel(VX, -VY); // Modifica la velocidad de la bola
const float LATERAL = (((rand() % 20) + 10) * 0.1f) * SIGNO;
const float MAIN = ((rand() % 40) * 0.1f) + 5;
float vx = 0, vy = 0;
switch (current_gravity_) {
case GravityDirection::DOWN: // Impulsar ARRIBA
vx = LATERAL;
vy = -MAIN;
break;
case GravityDirection::UP: // Impulsar ABAJO
vx = LATERAL;
vy = MAIN;
break;
case GravityDirection::LEFT: // Impulsar DERECHA
vx = MAIN;
vy = LATERAL;
break;
case GravityDirection::RIGHT: // Impulsar IZQUIERDA
vx = -MAIN;
vy = LATERAL;
break;
}
ball->modVel(vx, vy); // Modifica la velocidad según dirección de gravedad
}
}