Trabajo Práctico 2

Tp Estelar

 

Bitácora del capitán fecha estelar 200906160830. Nos encontramos con una raza nunca antes reconocida por la Federación Estelar, se llaman a sí mismos Candennarians.

Parecen ser amistosos pero su tecnología es más avanzada a la nuestra. Nos superan en número y potencia de ataque, afirman desear nuestra cooperación para la creación de un nuevo programa que será proyectado en el hollodeck. Se trata de una simulación de combate que servirá para el entrenamiento de los reclutas que se unan a las fuerzas armadas Candennarians.

Es por este motivo que lo hemos seleccionado a usted alférez, ya que nos hemos enterado de sus habilidades para la programación orientada a objetos, es de vital importancia que resuelva esta situación de forma satisfactoria para iniciar negociaciones diplomáticas con los Candennarians y gestionar su incorporación a la Flota Estelar.

El teniente La Forge ha trabajado junto al equipo alienígena y le ha preparado el siguiente informe, donde se le indican los puntos indispensables que debe cumplir su simulación. Se le pide que para las 1200 tenga listo el diseño del simulador y resueltos los puntos requeridos al final del informe.

El simulacro debe consistir en naves estelares que se enfrentan, de las cuales una puede resultar destruida como resultado de recibir un impacto de una nave enemiga. Las naves también pueden atacar ciudades.

Toda nave se encuentra habitada por tripulantes y comandada por una única persona (el capitán), que está a cargo de la nave.

Cada nave incluye varios sistemas (p.ej. presurización, navegación, fuerza motriz, comunicaciones); cada sistema es operado por uno o varios tripulantes. De cada sistema se sabe cuántos tripulantes como mínimo se necesita para tenerlo funcionando. Otro dato muy importante de cada sistema es su fabricante; a efectos de esta simulación podemos modelar los fabricantes como Strings.

Cada tripulante se asigna, a lo sumo, a un único sistema; puede no estar asignado a ninguno. También se puede cambiar un tripulante de un sistema a otro, desasignarlo, o asignarlo si estaba desasignado.

Cada tripulante es capacitado por uno o varios fabricantes de sistemas; en principio está capacitado para operar únicamente los sistemas hechos por los fabricantes que lo han capacitado. Puede pasar que con el tiempo aprenda a operar, además, uno o varios sistemas específicos de la nave en la que vive. De cada tripulante sabemos también su edad.

Un ejemplo: el tripulante Roque que vive en la nave SZ-141, fue capacitado por los fabricantes Acme, Beta y Omega, y además de los sistemas de estos fabricantes puede operar también el sistema de refrigeración posterior de la nave (ese lo fue aprendiendo durante su estadía en la nave).

 

De los dispositivos nos interesa: su fabricante y su peso (valores que se indican para cada dispositivo), más sus puntos de tácticas de persecución (que le sirven para esquivar ataques, como veremos más adelante) y sus puntos de daño.

En esta simulación vamos a incluir

a.    Torpedos de fotones, son uno de los ataques más poderosos. El daño que causa un torpedo es igual a la cantidad de fotones vivos que contiene. Los puntos de tácticas de persecución se obtienen multiplicando el peso del torpedo por el ángulo máximo de desvío instantáneo (un valor medido en grados de circunsferencia que varía de un torpedo de fotones a otro)

b.    Torpedos de neutrinos, sus puntos de tácticas de persecución se obtienen sumando la adaptabilidad al medio (que es la misma para todos los torpedos de neutrinos ya que deriva de sus componentes inalterables) más un plus que es el resultado de la programación individual de cada torpedo. Son el arma más avanzada y poderosa con la que puedan llegar a contar las naves estelares, su nivel de daño resulta de multiplicar su peso quince veces y sumar el daño mínimo que es un valor común a todos los torpedos de neutrinos.

c.    Faisers no tienen tácticas de persecución por el momento, quizás en un par de años luz cambie. El daño que irradian es constante en 230 puntos.

 

Cuando se usa un dispositivo de ataque se consume; p.ej. si en un momento una nave cuenta con dos 2 torpedos de fotones que irradian un daño de 100 y 500 puntos respectivamente, si dispara el de 500 solamente le quedará el de 100.

 

A su vez para evitar situaciones infortunadas cada nave cuenta con un conjunto de maniobras evasivas que le permiten a la nave evadir algunos ataques. Cada maniobra está limitada a funcionar con ataques de ciertos fabricantes; y tiene asociado un nivel de efectividad medido en puntos.

Una maniobra esquiva un ataque si: los puntos de tácticas de persecución del ataque son menores al nivel de efectividad de la maniobra, y además el fabricante del ataque está entre aquellos con los que la maniobra puede funcionar.

Una nave puede evadir un ataque si al menos una de las maniobras con las que cuenta sirve para esquivar el ataque; si esto sucede la nave no recibirá daño alguno de ese ataque.

 

En toda nave estelar hay tres indicadores que deben ser monitoreados en todo momento:

a.    Nivel de los escudos, cada nave nace con el nivel máximo de escudo que es 100, y al ser atacada este nivel baja. Una nave cuyo nivel de escudos se encuentra por debajo del cero es una nave destruida.

b.    Cantidad de dispositivos de ataque disponibles, como máximo una nave puede tener 100 dispositivos, cuando realiza un ataque se consume un dispositivo. Un dispositivo puede estar dañado; en esta simulación no reflejamos las razones del daño ni sus reparaciones, sólo registramos para cada dispositivo si está dañado (los dispositivos dañados se consideran no disponibles).

c.    Porcentaje de sistemas funcionando, o sea, que están siendo operados por al menos la cantidad de tripulantes mínima que precisa. Para obtener el porcentaje bastará con hacer la cuenta: cantidad de sistemas funcionando / cantidad total de sistemas *100.

 

Se pide:

1.    Estadísticas básicas

a.    Saber el conjunto de sistemas de una nave que no está funcionando.

b.    Obtener el conjunto de los tripulantes más viejos para cada sistema de una nave (el más viejo de los de refrigeración, el más viejo de los de navegación, etc.).

c.    Saber el nivel de robustez que tiene una nave estelar; que es la suma de los indicadores detallados arriba dividido tres.

d.    Saber si una nave es holgazana, o sea, hay más tripulantes desasignados que tripulantes asignados a un sistema.

e.    Saber si una nave está bien organizada, o sea, todos sus sistemas están funcionando, y no hay ningún tripulante asignado a un sistema que no está capacitado para operar.

2.    Movimiento de tripulantes

a.    Poder evacuar una nave, evacuar consiste en disparar la alerta de evacuación lo cual implica que todos los tripulantes dejan la nave. El capitán también deja la nave, pero sólo si él mismo considera que la nave no requiere de ninguna acción heroica (las acciones heroicas se llevan a cabo si el capitán está dispuesto a sacrificarse y el nivel de robustez de la nave es menor a 5).

b.    Modelar la incorporación de un conjunto de tripulantes a una nave; se destina a cada uno a un sistema que no esté funcionando y para el que el tripulante esté capacitado. Los tripulantes que se incorporan y que no pueden ser asignados a ningún sistema según lo descripto, quedan desasignados.

3.    Evasión de ataques:

a.    Saber si una maniobra evasiva puede esquivar un dispositivo de ataque determinado.

b.    Saber si una nave estelar puede evadir un dispositivo de ataque.

4.    Recibir un impacto (ataque del enemigo)

a.    Poder informarle al capitán que se registran daños críticos en la nave, en este caso, el capitán decidirá la acción que se tome a continuación. Como cada capitán es diferente cada uno sabe cuál es el nivel de robustez mínimo aceptable según su criterio; si la robustez de la nave cae por debajo de este mínimo el capitán debe ordenar la evacuación de la nave.

b.    Recibir un impacto propiamente dicho, del impacto se informa la cantidad de puntos que debe disminuir el nivel de escudos. Si luego de absorber el impacto, el nivel de los escudos es inferior a 20 debe informársele al capitán que se registran daños críticos en la nave.

5.    Atacar a otra nave enemiga o ciudad. En todo momento la nave estelar ataca a su objetivo con el mejor de los dispositivos de ataque disponibles. Se define como el mejor ataque al que causa mayor daño potencial.

Cuando una nave es atacada con un dispositivo: si puede lo evade (ver punto 3), si no recibe un impacto (punto 4.b) de un punto por cada 15 puntos de daño que irradia el dispositivo.

Cuando una ciudad es atacada con un dispositivo: mueren 200 habitantes por cada punto de daño irradiado por el dispositivo. De cada ciudad se conoce la población.

Hay que tener en cuenta que una vez utilizado el ataque deja de estar equipado en la nave estelar, por lo cual no será posible volver a lanzarlo. Podemos asumir que una nave no se queda nunca sin ataques (aunque en la práctica esto no sea así).

 

Nota:

1.    El trabajo debe contar con los siguientes conceptos:

 

     Clases

     Herencia

     Polimorfismo

     Polimorfismo con redefinición

     Metodos clase e instancia

     VI y VC

     Colecciones

     Delegación

     Excepciones

     Declaratividad

     No Efecto de lado cuando se pueda - Transparencia Referencial

     Encapsulamiento

     Abstracción

     Self y Super

 

2.    Para Entregar

 

     Hacer el trabajo práctico con class browser.

     Explicitar el workspace para cada punto a resolver.

     Explicar dónde se utilizaron todos estos conceptos

 

Comments