jueves, 24 de septiembre de 2009

Mario AI




Mario, el plomero más famoso del mundo ha sido recreado de muchas formas (sin pagar derechos de autor, claro) en Internet, dando la posibilidad de jugarlo en la PC en niveles nuevos y aleatorios. Pero existe por ahí un reto de programación en donde tienes que programar el comportamiento de Mario para que evite a los enemigos y logre terminar el nivel.

Este semestre, unos compañeros y yo desarrollamos un agente reactivo por capas para resolver el problema.

¿Y qué es un agente reactivo por capas? Es solo un programa que intenta ser inteligente, aunque no lo es y que tiene varias capas de acción ordenadas, y cada una de estas capas tiene una validación que la activa o no, si una capa se activa, aquéllas con orden menor ya no lo hacen.

Es más sencillo verlo en acción. nuestro Mario tiene 10 capas que se describen a continuación:
  1. ¿Esta Mario en el aire? -> No hagas nada
  2. ¿Hay un enemigo en frente? -> Bríncalo
  3. ¿Hay un agujero? -> Bríncalo corriendo
  4. ¿Hay un escalón o tubo y no hay enemigos arriba? -> Súbelo
  5. ¿Hay un escalón o tubo y hay un enemigo arriba? -> Espera a que el enemigo se vaya
  6. ¿Hay un enemigo en el aire? -> Esquívalo
  7. ¿Hay hongo en el nivel? -> Tómalo
  8. ¿Hay flor en el nivel? -> Tómala
  9. ¿Hay un bloque encima de Mario que se pueda golpear? -> Golpéalo
  10. De lo contrario -> Avanza
Para los que sepan un poco de programación, son solo un montón de if's anidados.

Es una técnica muy sencilla, y aunque no es la mejor para pasar un nivel de Mario, su comportamiento es muy aceptable.

Revísenlo en acción:



No hay comentarios:

Publicar un comentario