2. Temática a tratar
Introducción al dispositivo del
teclado.
Mostrar como las teclas del teclado
pueden representarse mediante tipos
enumerados.
Mostrar como un programa XNA
puede utilizar tanto el teclado como
el gamepad para controlar el juego.
3. XNA y el teclado
El Xbox 360 no esta equipada con teclado.
Es posible conectar un teclado a cualquier
puerto USB de la Xbox.
Un juego para Windows siempre esta
provisto por un teclado.
El teclado es utilizado de la misma manera
por una aplicación de juegos para la Xbox
360 o para Windows.
No es posible utilizar un teclado para un
dispositivo Zune.
4. El teclado en programas XNA.
El teclado es utilizado de una manera muy
similar al gamepad.
Un juego puede decir si o no una tecla
particular es presionada o soltada.
Las teclas no generan un carácter en si, el
juego puede leer el estatus de cualquier tecla.
Todas la teclas en el teclado pueden ser
probadas.
Las teclas Shift y Control tambien pueden ser
probadas
5. El tipo KeyboardState
El estado de un teclado es representado por
una variable en XNA por el tipo KeyboardState.
Este tipo provee los métodos que pueden ser
usados para encontrar si una tecla particular ha
sido presionada.
Estos tienen una ligera diferencia de las formas
del GamePadState.
Pero su funcionamiento tiene el mismo
principio.
6. Creando una variable KeyboardState
El juego utiliza esta variable para
almacenar el estado del teclado.
Esta luego utilizará los valores en esta
variable para que por medio del teclado
se pueda controlar el juego.
La variable debe ser almacenad como
cualquier otra variable del programa.
En este caso le hemos llamado keys.
KeyboardState keys;
7. Configurando la variable keys
La clase Keyboard es parte del XNA y
provee un método llamado GetState que
lee el estado del teclado.
No es necesario decirle a GetState cual
teclado leer, ya que el XNA solo soporta
un teclado.
El método GetState tiene el objeto
KeyboardState que almacena el estado del
teclado en un instante dado
KeyboardState keys = Keyboard.GetState();
8. Probando la tecla presionada
El método IsKeyDown es quien nos dice
que tecla ha sido presionada.
El método retorna true si la tecla ha sido
presionada.
El código anterior debe de incrementar el
color rojo si la tecla R es presionada.
El programador puede identificar la tecla a
ser probada, usando un valor de la
enumeración keys
if (keys.IsKeyDown(Keys.R)) redIntensity++;
9. La enumeración Keys
Los diseñadores de XNA han creado una enumeración,
la cual almacena valores que representan las teclas en
el teclado.
Una enumeración es un tipo que puede almacenar un
conjunto particular de valores.
Estas son utilizadas para ser usadas en una situación
especifica, donde solo queremos una variable para
almacenar valores particulares.
Es posible crear nuestras propias enumeraciones para
manejar el estado del juego.
10. Enumeraciones y VS
El VS tiene una
herramienta llamado
“Intellisense”, que puede
sugerir valores de una
enumeración que puede
ser usada.
Esto hace mucho más fácil
para un programador
crear código correcto.
11. Uso de la tecla Scape para salir
El proyecto creado puede detener su ejecución
si se presiona el botón Back.
Xna provee un método llamado Exit para
detener la ejecución del juego.
El programa anterior llama el método Exit
cuando la tecla Escape es presionada.
Este sentencia controla el programa por medio
del teclado.
if (keys.IsKeyDown(Keys.Escape))
{
this.Exit();
}
12. Manejando el teclado y el gamepad
Este código utiliza tanto el gamepad, Zune o el
teclado para controlar la intensidad del color rojo.
El método Keyboard.GetState siempre retorna algo.
Si no hay un teclado presente KeyboardState
retorna un valor que no hay teclas presionadas.
if (keys.IsKeyDown(Keys.R) ||
pad1.DPad.Right == ButtonState.Pressed ||
pad1.Buttons.B == ButtonState.Pressed)
{
redIntensity++;
}
13. Lógica avanzada
Este código configura la intensidades a 0 si las
teclas Shift (ambas)son presionadas o si los botones
“shoulders” del gamepad son presionados.
Se observan las diferentes combinaciones que
deben realizarse.
if ( (keys.IsKeyDown(Keys.LeftShift) &&
keys.IsKeyDown(Keys.RightShift)) ||
(pad1.Buttons.LeftShoulder == ButtonState.Pressed &&
pad1.Buttons.RightShoulder == ButtonState.Pressed))
{
redIntensity = 0;
greenIntensity = 0;
blueIntensity = 0;
}
14. Lógica avanzada
Las dos condiciones son encerradas entre paréntesis
para decirle al compilador que ambas deben ser
evaluadas y luego combinadas usando el operador OR
Los paréntesis trabajan de la misma manera que en la
aritmética.
if ( (keys.IsKeyDown(Keys.LeftShift) &&
keys.IsKeyDown(Keys.RightShift)) ||
(pad1.Buttons.LeftShoulder == ButtonState.Pressed &&
pad1.Buttons.RightShoulder == ButtonState.Pressed) )
{
redIntensity = 0;
greenIntensity = 0;
blueIntensity = 0;
}
16. Resumen
El Framework del XNA provee un tipo llamado
KeyboardState para representar el estado del teclado en
un instante en particular.
La clase Keyboard provee el método GetStatus el cual
retorna el valor de KeyboardState.
El método GetState retorna un tipo de valor Keys para
identificar que tecla ha sido presionada.
El valor de KeyboardState provee un método llamado
IsKeyDown, el cual nos dice que tecla en particular ha
sido presionada.
17. Verdadero o falso
Un programa XNA puede manejar al
menos 4 teclados.
El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
El método GetState de la clase Keyboard
retorna el estado del teclado.
El tipo Keys tiene un valor para cada
posible tecla del teclado.
18. Verdadero o falso
Un programa XNA puede manejar al
menos 4 teclados.
El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
El método GetState de la clase Keyboard
retorna el estado del teclado.
El tipo Keys tiene un valor para cada
posible tecla del teclado.
19. Verdadero o falso
Un programa XNA puede manejar al
menos 4 teclados.
El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
El método GetState de la clase Keyboard
retorna el estado del teclado.
El tipo Keys tiene un valor para cada
posible tecla del teclado.
20. Verdadero o falso
Un programa XNA puede manejar al
menos 4 teclados.
El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
El método GetState de la clase Keyboard
retorna el estado del teclado.
El tipo Keys tiene un valor para cada
posible tecla del teclado.
21. Verdadero o falso
Un programa XNA puede manejar al
menos 4 teclados.
El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
El método GetState de la clase Keyboard
retorna el estado del teclado.
El tipo Keys tiene un valor para cada
posible tecla del teclado.