Bienvenidos sean a este post, hoy veremos como manejar las entradas.
En este post comenzaremos una serie de posts para manejar las entradas para nuestro juego. Pero a que nos referimos con entradas? No es otra cosa que los controles que van desde el teclado hasta los mandos (joysticks/gamepads).
Hasta el post anterior creamos objetos que se desplazan con una velocidad y aceleracion, y tasa fija de fps. Pero a partir de ahora nos toca centrarnos en como manejarlos.
SDL es una libreria muy completa porque no solo nos permite hacer todas las tareas que vinimos haciendo hasta ahora sino tambien podemos controlar multiples interfaces tales como Joysticks, Gamepads, Mouses y Teclados, los cuales tienen una «facil» implementacion para nuestros proyectos. Como comentamos anteriormente, lo iremos desarrollando a lo largo de los siguientes posts.
Hoy solamente hablaremos de la teoria y algunos conceptos pero a partir del proximo post iremos viendo toda la teoria necesaria para permitirnos manejar a nuestros objetos en el juego.
Hoy en dia tenemos en el mercado cientos o miles de dispositivos para poder jugar. Cada uno con sus propiedades, mas o menos botones, mas o menos controles. En general, es bastante engorroso tener un buen soporte para los distintos tipos de controles que existen en el mercado, pero afortunadamente SDL tiene un buen soporte para estas eventualidades y no deberiamos tener grandes inconvenientes para soportarlos. Comencemos hablando sobre los eventos para los Joysticks.
SDL posee unas pocas estructuras para poder manejar los eventos de Joysticks, a continuacion una tabla con cada una de ellas y su proposito:
| Evento | Proposito |
| SDL_JoyAxisEvent | Informacion del movimiento de los ejes |
| SDL_JoyButtonEvent | Informacion sobre la presion y liberacion de boton |
| SDL_JoyBallEvent | Informacion de movimiento del evento Trackball |
| SDL_JoyHatEvent | Cambia la posicion del Hat del Joystick (*) |
Los eventos que mas usaremos son los dos primeros porque son los encargados de manejar los eventos de direcciones y de accion. A su vez cada uno de estos eventos tiene un valor numerado que nos permite saber si realmente estamos manejando los eventos que queremos. Veamos la siguiente tabla donde estan algunos de los valores para los eventos anteriores:
| Evento | Valor de Tipo |
| SDL_JoyAxisEvent | SDL_EVENT_JOYSTICK_AXIS_MOTION |
| SDL_JoyButtonEvent | SDL_EVENT_JOYSTICK_BUTTON_DOWN o SDL_EVENT_JOYSTICK_BUTTON_UP |
| SDL_JoyBallEvent | SDL_EVENT_JOYSTICK_BALL_MOTION |
| SDL_JoyHatEvent | SDL_EVENT_JOYSTICK_HAT_MOTION |
Nota:
Es una buena idea usar Joystick Control Panel en Windows o el JoystickShow en OSX, ya que nos permitiran tener una mejor informacion de los valores para cada boton o mando que tiene nuestro gamepad/joystick
Para ir finalizando con el tema de hoy vamos a suponer que tenemos un mando de Xbox 360, uno de los mas difundidos por todos los gamers de PC, dada su gran practicidad y compatibilidad tanto con Windows como con Mac o Linux. Aunque hoy puede trabajar de manera similar el mando de PS4 puede tener unas sutiles diferencias, veamos como esta compuesto el gamepad de la Xbox 360:
- Dos mandos analogicos
- Los mandos analogicos se pueden presionar como botones
- Botones de Start y Select
- Cuatro botones al frente: A,B,X,Y
- Cuatro disparadores: dos analogicos y dos digitales
- Un pad direccional digital
En los proximos posts iremos viendo como detectar cada uno de ellos y poder tomar las acciones que sean necesarias.
En resumen, hoy hemos visto una leve introduccion de los eventos que usa SDL para manejar los dispositivos de entrada, en el caso de hoy fueron los joysticks/gamepads, tambien hemos creado la clase base encargada de manejar los futuros eventos, en los proximos posts iremos los diferentes metodos para manejar a nuestros objetos, Espero les haya resultado de utilidad, les dejo algunas de mis redes sociales para seguirme o recibir una notificacion cada vez que subo un nuevo post:


Donación
Es para mantenimento del sitio, gracias!
$1.50





