Implementar sistema de gravedad direccional con controles de cursor

- Añadir enum GravityDirection (UP/DOWN/LEFT/RIGHT) en defines.h
- Modificar Ball class para soportar gravedad multi-direccional
- Reescribir Ball::update() con lógica direccional completa
- Cambiar on_floor_ por on_surface_ (más genérico)
- Implementar detección de superficie según dirección de gravedad
- Añadir controles de teclado con teclas de cursor
- Actualizar debug display para mostrar dirección actual
- Aplicar fricción correctamente según superficie activa

Controles nuevos:
- ↑/↓/←/→: Cambiar dirección de gravedad
- H: Toggle debug display (incluye nueva info de gravedad)

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-17 22:37:19 +02:00
commit dec8d431f5
17 changed files with 9767 additions and 0 deletions

24
source/defines.h Normal file
View File

@@ -0,0 +1,24 @@
#pragma once
constexpr char WINDOW_CAPTION[] = "vibe3_physics";
constexpr int SCREEN_WIDTH = 320;
constexpr int SCREEN_HEIGHT = 240;
constexpr int WINDOW_SIZE = 3;
constexpr int BALL_SIZE = 10;
constexpr float GRAVITY_FORCE = 0.2f;
// DEMO_SPEED eliminado - ya no se usa con delta time
constexpr Uint64 TEXT_DURATION = 2000;
struct Color {
int r, g, b;
};
// Enum para direcci\u00f3n de gravedad
enum class GravityDirection {
DOWN, // \u2193 Gravedad hacia abajo (por defecto)
UP, // \u2191 Gravedad hacia arriba
LEFT, // \u2190 Gravedad hacia la izquierda
RIGHT // \u2192 Gravedad hacia la derecha
};