Cuantas veces cuando creamos un juego o alguna aplicación en Java en la cual interactúe el usuario, nos vemos en la necesidad de agregar soporte para un control, para dejar de lado el aburrido teclado :).
El problema es que nos encontramos con que hay opciones especificas a una plataforma, normalmente a Windows usando DirectX. Como usuario de Linux busque una opción que se adecuara a mis necesidades, así encontré JInput para definirlo usare la misma información que se encuentra en la pagina:
"The JInput Project hosts an implementation of an API for game controller discovery and polled input. It is part of a suite of open-source technologies initiated by the Game Technology Group at Sun Microsystems with intention of making the development of high performance games in Java a reality.
Bueno lo interesante aqui es que es neutral a la plataforma a la que se use para esto usa plugins especificos al Sistema Operativos, sin mas que hablar vamos a ver como funciona:The API itself is pure Java and presents a platform-neutral completely portable model of controller discovery and polling. It can handle arbitrary controllers and returns both human and machine understandable descriptions of the inputs available."
Requerimientos:
- Java JDK 5 o superior
- Eclipse 3.5 o superior
- JInput
- 1 Control de Juego
Una vez descargado JInput tendremos una serie de archivos así como se ve en la figura:
De todos estos archivos solo nos interesa jinput.jar y las librerias nativas de acuerdo al SO y a la arquitectura del computador que se este usando, en mi caso uso Ubuntu 10.4 de 64 bits asi que usare libjinput-linux64.so si tienes una distribucion de linux de 32 bits usaras libjinput-linux.so
Vamos a crear un nuevo proyecto en eclipse nos vemos a File >> New >> Java Project, colocamos el nombre de JInputTest a nuetro proyecto, clic en siguiente, ahora vamos a agregar la libreria jinput.jar y libjinput-linux64.so, para esto hacemos clic en la pestaña Libraries, clic en add jar y seleccionamos jinput.jar, luego expandimos la libreria JRE System Library dentro de el encontramos un item que dice Native Library Location, hacemos double clic y colocamos la ruta la carpeta donde se encuentra la libreria libjinput-linux64.so.
JInputTest.java
import net.java.games.input.Controller;
import net.java.games.input.ControllerEnvironment;
public class JInputTest {
public static void main(String[] args){
//Obtenermos los controles que detecta nuestra computadora
Controller[] controllers = ControllerEnvironment.getDefaultEnvironment().getControllers();
for(Controller c : controllers){
System.out.println("Encontrado el control " + c.getName() + " que es un " + c.getType());
}
}
}
El método getControllers() se encargara de detectar todos los controles que tengamos conectados a nuestra PC, con getName() obtenemos el nombre comercial del control y getType() nos dirá que tipo de control es.
La salida del programa dependerá del control que tengan:
Encontrado el control DragonRise Inc. Generic USB Joystick que es un Stick
Ahora que sabemos cual es nuestro control vamos a ver que componentes tenemos, para esto agregamos:
JInputTest.java
import net.java.games.input.Component;
import net.java.games.input.Controller;
import net.java.games.input.ControllerEnvironment;
public class JInputTest {
public static void main(String[] args){
//Obtenermos los controles que detecta nuestra computadora
Controller[] controles = ControllerEnvironment.getDefaultEnvironment().getControllers();
for(Controller c : controles){
System.out.println("Encontrado el control " + c.getName() + " que es un " + c.getType());
}
//Obtenemos nuestro control
Controller controlActual = controles[0];
//Obtenemos los componentes del control
Component[] componentes = controlActual.getComponents();
int i = 0;
for(Component c : componentes){
System.out.println("Componente " + i + " :" +c.getName());
i++;
}
}
}
Ejecutamos y tendremos los componentes de nuestro control.
Componente 0 :Trigger
Componente 1 :Thumb
Componente 2 :Thumb 2
Componente 3 :Top
Componente 4 :Top 2
Componente 5 :Pinkie
Componente 6 :Base
Componente 7 :Base 2
Componente 8 :Base 3
Componente 9 :Base 4
Componente 10 :Base 5
Componente 11 :Base 6
Componente 12 :x
Componente 13 :y
Componente 14 :z
Componente 15 :rx
Componente 16 :rz
Componente 17 :pov
Por el momento eso es todo, en la segunda parte de este tutorial veremos como interactuar con nuestro control.
y la parte dos amigo?como interactuo?
ResponderEliminarEsperando por la parte dos :(
ResponderEliminar