PDF de programación - Autómatas y animaciones (II)

Imágen de pdf Autómatas y animaciones (II)

Autómatas y animaciones (II)gráfica de visualizaciones

Publicado el 6 de Febrero del 2017
1.071 visualizaciones desde el 6 de Febrero del 2017
83,5 KB
6 paginas
Creado hace 15a (19/01/2009)
Losersjuegos - Autómatas y animaciones (II)

http://www.losersjuegos.com.ar

Autómatas y animaciones (II)

Créditos

» Autor: Hugo Ruscitti
» Fecha: 30 de Julio del 2005

Introducción

Un personaje de video juego suele realizar varios movimientos simples como: saltar, correr, disparar etc.

En algunos juegos la cantidad de movimientos por personaje es numerosa y suele combinarse. Por ejemplo, en
el videojuego Street Fighter el jugador puede "golpear mientras salta", o "patear agachado en el suelo".

En este último caso, programar el comportamiento de un personaje se hace más difícil a medida que crece el
número de acciones involucradas.

En este artículo veremos como gestionar un conjunto de movimientos mediante autómatas finitos. Al final del
artículo se presenta una pequeña demostración de un video juego de peleas.

Estados

Un estado representa el comportamiento del personaje en un momento dado. Cada estado reacciona de
manera diferente a los eventos (como la pulsación de una tecla) y está asociado a una animación diferente:

En este caso, el personaje de la figura cuenta con el estado PARADO, ya que tiene una animación asociada y
reacciona de manera diferente ante un evento como "golpear", en comparación a otro estado como SALTA.

Autómata

Un autómata finito es un modelo lógico asociado a una serie de propiedades, entre ellas, un conjunto de
estados, un alfabeto y una relación de transición.

Pero para nuestra aplicación no será necesario profundizar en la definición formal de autómatas, en su lugar
optamos por presentar el concepto de manera informal.

Interpretación informal del autómata:

Podemos imaginar a un autómata como una máquina que se encuentra en un estado particular, y que ante

Página 1/6

Losersjuegos - Autómatas y animaciones (II)

http://www.losersjuegos.com.ar

determinados eventos cambia de un estado a otro.

Nuestro personaje funcionará como un autómata:

Cuando comienza el juego estamos en posición de combate (un estado), si pulsamos hacia arriba (un evento)
comenzamos a saltar. Saltar será nuestro nuevo estado, y en él tendremos una serie de posibilidades nuevas
como realizar una "patada voladora".

Este criterio se puede apreciar fácilmente mediante un diagrama de transiciones:

De la figura podemos deducir algunas características:

diagrama de transiciones simple

Página 2/6

Losersjuegos - Autómatas y animaciones (II)

http://www.losersjuegos.com.ar

» El autómata no puede estar en mas de un estado al mismo
» Los eventos relacionan a los estados entre sí.
» No todos los eventos implican un cambio de estado, para
sentido
mientras el personaje se encuentra en estado "salta".

tiempo.

este ejemplo un evento como "agachar" no tiene

Implementando un gestor de estados:

Existen varias formas de implementar un gestor de estados partiendo de un autómata. Si bien el modelo original
será idéntico, cada implementación difiere en eficiencia y complejidad.

Aquí, como en el resto de los artículos, optamos por un criterio simple y fácil de implementar, el objetivo de los
ejemplos es brindar una base de prueba para interpretar. Seguramente encontrará formas más eficientes de
implementar este programa utilizando punteros a funciones o polimorfismo.

Ejemplo:

A continuación podrá descargar el ejemplo del artículo.

El programa de ejemplo en GNU/Linux

ejecutable para Windows
fuente en lenguaje C para GNU/Linux

» Versión
» Código
» Ver el código fuente
» Bajar el diagrama de
En el programa podemos manejar al personaje con los direccionales del teclado y mediante las teclas 'x' y 'z'
podemos "patear" y "golpear con el puño" respectivamente.

on-line
transiciones en formato .dia

El título de la ventana nos indica el estado actual del autómata.

Página 3/6

Losersjuegos - Autómatas y animaciones (II)

http://www.losersjuegos.com.ar

El personaje almacena su estado actual junto con el resto de sus propiedades dentro de la estructura actor:

enum estado { PARADO, SALTA, GOLPEA [...] };

struct actor
{
enum estado;
int x;
int y;
[...]
}

El manejo general del personaje consiste en llamar de manera periódica a la función:

void actor_actualizar (struct actor * obj)

que selecciona, en base al estado del actor, que función se debe procesar para representar el comportamiento
en ese instante.

Así, cada estado se encuentra asociado a una función independiente que recibe los datos del personaje y las
teclas pulsadas:

void actor_estado_parado (struct * actor obj, Unit8 * key);
void actor_estado_camina (struct * actor obj, Uint8 * key);
void actor_estado_agachado (struct * actor obj, Uint8 * key);
[...]

Diagrama de transiciones:

El siguiente gráfico es una versión reducida del diagrama de transiciones utilizado en el ejemplo:

Página 4/6

Losersjuegos - Autómatas y animaciones (II)

http://www.losersjuegos.com.ar

Referencia

Página 5/6

Losersjuegos - Autómatas y animaciones (II)

http://www.losersjuegos.com.ar

Conclusión:

La mayor parte del trabajo dedicado a esta técnica consiste en diseñar un autómata que cubra nuestros
requerimientos; a partir de ahí, la implementación posterior es muy sencilla y fácil de modificar.

Licencia

Se permite la copia, modificación y distribución de este artículo sólo bajo los términos de la Licencia Creative
Commons.

Este documento ha sido generado automáticamanete a partir del archivo 'automatas.xml' el Mon Jan 19 09:32:57
2009
La versión mas reciente de este documento se almacena en www.losersjuegos.com.ar. Visitenos para obtener
mas recursos y actualizaciones.

Página 6/6
  • Links de descarga
http://lwp-l.com/pdf2307

Comentarios de: Autómatas y animaciones (II) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad