programación gráfica manejo de estados. modelación con estados. ¿por qué nos interesa modelar...
Post on 06-Jan-2015
4 Views
Preview:
TRANSCRIPT
Programación Gráfica
Manejo de Estados
Modelación con estados.• ¿Por qué nos interesa modelar el videojuego
basándonos en estados?
• Porque es más intuitivo trabajar así.• Porque las acciones que realiza un personaje se pueden
modelar con estados.• Porque las diversas pantallas en el videojuego pueden
modelarse con estados.• Porque es más sencillo al momento de programar.
Switch• Usado cuando se tiene un
número finito de valores para una variable.
• Típicamente usado para el diseño de menús.
• Típicamente usado para el manejo de estados. (usando enum)
switch(tecla){
case W:protagonista->MoverUp();break;
case A:protagonista->MoverLeft();break;
case D:protagonista->MoverRight();break;
case S:protagonista->MoverDown();break;
case ESPACE:protagonista->Disparar()break;
case ESC:continuar = false;break;
default:break;
}
Enum• Es un tipo de estructura en la que los literales de los
valores que pueden tomar sus objetos se indican explícitamente al definirlas.
enum TipoCarta
{
Pica,
Diamante,
Trébol,
Corazones
};
Uso de enumeraciones
• Una variable de tipo enumerado se define igual que cualquier otra variable:
<nombreTipo> <nombreVariable>;
TipoCarta tipo;
NumeroCarta numero;
Uso de enumeraciones
• Para la asignación, se debe asignar a la variable cualquiera de los valores de la enumeración:
<nombreVariable> = <valor_nombreTipo>;
tipo = TipoCarta.Corazones;
Numero = NumeroCarta.kaiser;
Máquinas de Estados.
Fuente: http://xnacommunity.codeplex.com/Wiki/View.aspx?title=IA_maqestados&referringTitle=Noticias
Principios
• Cómo un enemigo decide realizar una acción?• Qué lo hace decidir?
• Podemos definirles estados:– Buscar– Patrullar– Seguir
Máquinas de estados finitos
Máquinas de estados finitos
• En un momento determinado estamos en un estado.
• Si se cumple una condición se salta a otro estado.
Máquinas de estados finitos
Estados básicos del loop de un videojuego.
Máquinas de estados finitos
Estados de acciones de un enemigo.
Movimiento del Protagonista.
Movimientos
• Según la asignación del INPUT (teclado, mouse, etc.) se deben asignar movimientos a los diversas acciones que puede hacer el protagonista.
Movimiento de una nave• ¿ Qué movimientos puede hacer una nave ?
Movimiento de una naveenum MovType
{
MOV_NONE,
MOV_UP,
MOV_RIGHT,
MOV_LEFT,
MOV_DOWN
};
Movimiento de una nave• ¿ Y las diagonales ?
Movimiento de una naveenum MovType
{
MOV_NONE,
MOV_UP,
MOV_RIGHT,
MOV_LEFT,
MOV_DOWN,
MOV_UP_RIGHT,
MOV_UP_LEFT,
MOV_DOWN_RIGHT,
MOV_DOWN_LEFT
};
Cambio de Estado
• Por lo general, para los movimientos se puede pasar de un estado a otro.
• Las excepciones surgen cuando se construyen movimientos con la unión de otros movimientos:– Movimientos Diagonales.– Poderes Especiales.
Cambio de Estado
Cambio de Estado
Mover la nave
• Vemos en qué estado estamos con un switch y realizamos dicha acción.
top related