Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Computadores
Grado en Ingeniería Informática
Se debe entregar una memoria explicativa de la simulación en formato PDF junto a los
códigos correspondientes para el siguiente ejercicio.
Se desea replicar el mundo de futuro apocalíptico introducido por las películas de
Terminator, en donde una Inteligencia Artificial llamada Skynet controla robots con altas
capacidades militares. Para ello se desea realizar una simulación basada en hilos
formada por dos bandos: el equipo de Terminators cuyo líder es el propio Skynet, y el
equipo de la Resistencia cuyo líder es John Connor.
Se deben seguir las siguientes instrucciones:
1) Se debe realizar una correcta abstracción del entorno mediante la programación
orientada a objetos. Se deben considerar las casillas del entorno, el propio
entorno, los individuos (robots, personas y líderes) y la simulación propiamente
dicha. Además, se deben incluir mecanismos de herencia para los distintos robots
ya presentan algunas funcionalidades similares. No se permiten variables
globales en ninguna circunstancia.
3) El entorno debe ser una matriz por defecto de 75x75 donde deben moverse los
individuos. No obstante, este tamaño debe ser configurable al inicio de la
simulación.
4) Hay dos tipos de robots: los T-800 con resistencia baja a las armas rivales y los T-1000
de metal líquido, con alta resistencia a las armas. Los primeros necesitan ser alcanzados
por al menos cinco disparos, mientras que los segundos necesitan veinte disparos para
ser terminados.
5) Las personas de la resistencia solo resisten un disparo por parte de los robots, ya que
son mucho más débiles que éstos.
6) La proporción de personas y robots será 15 a 1 por defecto. Es decir habrá 15 personas
de la resistencia por cada robot enviado por Skynet. No obstante, esta opción debe ser
configurable al inicio de la simulación. Eso sí, al menos la simulación debe tener a John
Connor, y un robot de cada tipo. El número total es aleatorio o configurable, pero
siempre cumpliendo estas reglas.
7) Skynet es un líder global presente en todo la simulación. Solo puede ser desconectado
si todos los robots han sido terminados por la resistencia. Sin embargo, John Connor es
un miembro más de la resistencia. Esto implica que si él cae, la resistencia se acaba y
pierde.
8) Los individuos se desplazan a velocidades diferentes, siendo los T-1000 los más
rápidos, luego las personas de la resistencia y por último los T-800. Esto debe
ser configurado mediante comandos sleep en los hilos correspondientes.
10) Las operaciones de los robots y las personas serán siempre primero disparar al
rival si es posible (una casilla de distancia), y luego desplazarse. Por lo tanto, la
prioridad siempre será acabar con un rival. Solo se produce un disparo cada vez,
y una vez elegido el rival, éste siempre es alcanzado.
11) No pueden estar en la misma casilla ningún individuo, sea robot o persona, es
decir no se pueden superponer entre ellos.
12) Cuando un individuo termina o mata a un rival, sea robot o persona, éste debe
avanzar obligatoriamente a la casilla ocupada por el rival eliminado.
16) Los movimientos, las terminaciones y las muertes deben realizarse en exclusión
mutua.
18) Como idea, mira los siguientes enlaces web donde se explica las librerías
multithreading de Python.
https://www.tutorialspoint.com/python/python_multithreading.htm