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:
- ¿Esta Mario en el aire? -> No hagas nada
- ¿Hay un enemigo en frente? -> Bríncalo
- ¿Hay un agujero? -> Bríncalo corriendo
- ¿Hay un escalón o tubo y no hay enemigos arriba? -> Súbelo
- ¿Hay un escalón o tubo y hay un enemigo arriba? -> Espera a que el enemigo se vaya
- ¿Hay un enemigo en el aire? -> Esquívalo
- ¿Hay hongo en el nivel? -> Tómalo
- ¿Hay flor en el nivel? -> Tómala
- ¿Hay un bloque encima de Mario que se pueda golpear? -> Golpéalo
- 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