Vous êtes sur la page 1sur 8

lica de Chile Pontificia Universidad Cato Escuela de Ingenier a n Departamento de Ciencia de la Computacio

IIC2233 Programaci on Avanzada (II/2012)

Tarea 2 1. Objetivos
Aplicar conceptos y nociones de OOP, espec camente Herencia y Polimorsmo. Aplicar conceptos de I/O y manejo de distintos formatos en un mismo programa.

2.

Deniciones Previas
HP: Hit Points. Valor num erico correspondiente a la cantidad de da no que puede recibir un personaje o enemigo. MP: Magic Points. Unidades de potencial m agico. Ciertas habilidades requieren y consumen MP en cantidades espec cas. GP: Gold Points. Medio de pago de bienes y servicios.

3.

Introducci on

Te encuentras en un mundo de fantas a futurista hermoso y desconocido. Eres un ciudadano de Narshe, una ciudad que est a preparando un plan para acabar con la ciudad enemiga Kohlingen. Sabes que ellos tambi en traman algo, puesto que sus esp as han estado robando informaci on encriptada sobre Narshe desde hace alg un tiempo (cosa que no preocupaba a la poblaci on en general, dado que el retraso tecnol ogico de Kohlingen en el ambito de la programaci on inutilizaba esta informaci on fuera de Narshe). Sin embargo, un d a sucedi o un infortunio: fuiste raptado por Kohlingen para descifrar la informaci on robada. Luego de un largo interrogatorio, los habitantes de Kohlingen se han enterado que la informaci on que poseen corresponde a sectores de Narshe y de las criaturas que habitan en estos. Ahora usted deber a trabajar en el proyecto Final File X, ya que de esto depende su supervivencia como prisionero. Final File X es una simulaci on interactiva donde usted recibir a un listados de los mejores hombres de Kohlingen y sus respectivas caracter sticas, los cuales recorrer an virtualmente Narshe con el n de seleccionar el mejor grupo de defensores dispuestos a arriesgar su vida para salvar a su ciudad del enemigo invasor.

4.

Especicaciones

El espacio virtual de la simulaci on se divide en sectores que los personajes deben recorrer para poder completar su misi on. En general, los sectores est an custodiados por enemigos que inician un enfrentamiento al entrar a tal sector. Un enfrentamiento se divide en fases que incluyen las acciones efectuadas tanto por enemigos como personajes. Estas acciones se ejecutan en orden de mayor a menor velocidad individual de la unidad correspondiente. Todo cambio provocado por una acci on se hace efectivo inmediatamente despu es de la ejecuci on de tal acci on. Esto implica que, 1

por ejemplo, si un personaje muere con una acci on en cola, tal acci on no se realizar a. En caso de no desear continuar un enfrentamiento, los personajes tienen la opci on de huir (escapan todos hacia el sector de procedencia) con una cierta probabilidad de exito. Si nalizan un enfrentamiento victoriosos (todas las unidades enemigas terminan con HP en cero), un curandero en el equipo (demasiado cobarde para entrar a la batalla inicialmente) ofrece la posibilidad de curar a tus unidades por un precio particular en cada sector. Posteriormente, se puede seleccionar una nueva ruta a otro sector (puede volverse a sectores ya recorridos). El juego naliza cuando se llega al sector marcado como nal le o todos los personajes hayan muerto (ver subsecci on Sector para m as informaci on). Conceptos relevantes a la hora de construir la simulaci on se encuentran a continuaci on.

4.1.

Sector

Lugares virtuales que los personajes deben explorar. Cada sector es representado por un archivo que debe leer el programa, cuyo formato puede ser .txt, binario o .xml. Pasar de sector a sector implica cargar el archivo correspondiente al sector seleccionado, cuyo path est a incluido (junto con el resto de la informaci on del sector) en el archivo del sector actual. N otese que, si bien el formato var a, el tipo de informaci on contenida en todos los archivos de sector es la misma. Esta informaci on incluye si el sector es el nal le o no, el n umero de rutas desde este sector, los path relativos de los sectores conectados por las rutas, el costo de los servicios del curandero, los enemigos presentes, el tesoro disponible y una breve rese na hist orica del sector (ver secci on Lo que tu programa debe recibir para m as informaci on).

4.2.

Personajes

Son los valientes candidatos para viajar hasta Narshe y destruir la amenaza que existe sobre Kohlingen. Los personajes con los que se cuentan en cada partida depende de un archivo inicial con los datos correspondientes (ver secci on Lo que tu programa debe recibir para m as informaci on). Cada uno pertenece a una clase y es de un tipo espec co. Adem as, cada personaje puede acumular experiencia en combate; al nalizar una batalla la experiencia ganada es calculada como exp = Ni , sea Ni el nivel de cada enemigo derrotado por el personaje. Los personajes aumentan de nivel dependiendo de su experiencia seg un la ecuaci on lvl = [ exp], es decir, se toma la parte entera (eliminando todo decimal) de la ra z cuadrada de la experiencia. A partir del nivel se puede conocer su HP m aximo calculado como HP lvl , MP m aximo calculado como M P base lvl 0,8 y su velocidad calculada base como V elbase 3 lvl. Por u ltimo, los personajes poseen oro que sirve para pedir curaciones al curandero y es com un para todos estos. La cantidad inicial de este depende de un archivo inicial m as el oro encontrado en cada sector. N otese que todos los calculos que incluyen constantes base hacen referencia al valor de cada especialidad (ver subsecci on Combate para m as informaci on).

4.3.

Enemigos

Son las criaturas que custodian los diferentes sectores de la ciudad Narshe. Salvo el hecho que son antag onicos a los personajes, son id enticos a estos en construcci on de HP, MP, experiencia/nivel, velocidad, clase y tipo. Si los personajes salen victoriosos de un encuentro con enemigos, pueden conservar el oro que los enemigos llevan consigo.

4.4.

Tipos

Clasicaci on multiprop osito para la simulaci on. Existen 5 tipos: Agua, Aire, Fuego, Tierra y Neutral. Cada poder, personaje y enemigo es de alg un tipo. El apareamiento de tipo entre una unidad y un ataque a ella resulta en distintos multiplicadores al da no (por ejemplo, ciertos ataques de tipo A causan el doble de da no a unidades de tipo B). Esta dependencia se especica en el Cuadro 1.

Tipo Poder / Tipo Receptor Agua Aire Fuego Tierra Neutral

Agua 0,5 1 0,5 0,5 1

Aire 1 0,5 2 0,5 1

Fuego 2 0,5 0,5 2 1

Tierra 2 2 0 ,5 0 ,5 1

Neutral 1 1 1 1 1

Cuadro 1: Multiplicadores por asociaci on de tipo.

4.5.

Especialidades y Clases

Final File X ostenta tres especialidades en el arte del combate, de las cuales derivan dos clases. Todas las clases tienen un ataque con arma (ataque basal) sin costo de MP; ataques que consumen MP var an para cada clase. 1. Melee: especialistas en combate cuerpo a cuerpo. Cuentan con 100 HP, 30 MP, un ataque basal de lvl 20 HP y una velocidad base de 10. Son capaces de atacar una segunda vez con un 15 % de probabilidad. De esta especialidad derivan las clases Warrior y Paladin.

Warrior: no recibe da no por poderes tipo Tierra y devuelve tales ataques como da no de tipo Neutral al 30 % del da no original del poder tipo Tierra. Si recibe un ataque de tipo aire, la unidad no puede atacar el siguiente turno. Sus poderes son Fissure, Inferno, Air Cutter y Water Gun. Paladin: tras recibir un ataque tipo Fuego, sus quemaduras causan 10 % del da no de tal ataque durante 3 turnos. Todo ataque tipo Aire que realice ser a multiplicado por n, sea n el n umero de ataques tipo Aire recibidos desde la u ltima vez que se aplic o esta habilidad. Sus poderes son Hydropump, Glowing Arrow, Earthquake y Flamethrower. 2. Ranger: especialistas en combate a larga distancia. Cuentan con 65 HP y MP, un ataque basal de lvl 10 HP y una velocidad base de 20. Pueden propagar su ataque a todos los enemigos con un 10 % de probabilidad, as como conectar un disparo entre los ojos al usar su ataque basal (muerte instant anea a un 5 % de probabilidad). De esta especialidad derivan las clases Gunslinger y Archer.

Gunslinger: acumula ira con cada ataque tipo Fuego recibidos; al superar los 10 ataques recibidos de este tipo, esta unidad usa una granada tipo Fuego que da na a todo oponente por un da no igual al promedio del da no de los 10 ataques mencionados previamente. Lanzar la granada calma su ira. Finalmente, ataques tipo Agua recibidos reduce el da no que puede causar por 3 turnos a la mitad. Sus poderes son Fire Blast, Dig, Surf y Aerial Ace. Archer: ante cualquier ataque tipo Aire recibido, el arquero contraataca con su ataque basal. En caso de recibir un ataque tipo Fuego, sus echas se incendian y su pr oximo ataque (sin importar cu al sea) ser a de tipo Fuego. Sus poderes son Hydropump, Glowing Arrow, Incinerate y Mud Shot.

3. Caster: especialistas en las artes m agicas. Cuentan con 30 HP, 100 MP, un ataque basal de lvl HP y una velocidad base de 10. Tienen la capacidad de curar heridas (tanto a s mismos como a otros) a un costo de 1 MP por 1 HP restaurado. De esta especialidad derivan las clases Wizard y Priest.

Wizard: los ataques tipo Agua recibidos no causan da no; en efecto, restauran el 20 % del da no del ataque en HP. Existe un 2 % de probabilidad de que un enemigo pierda el siguiente turno cada vez que un Wizard ataca. Sus poderes son Hydropump, Glowing Arrow, Earthquake y Flamethrower. Priest: cuenta con una habilidad pasiva de confusi on; al atacar, existe un 5 % de probabilidad de confundir al enemigo (un enemigo confundido redirige su pr oximo ataque a s mismo). Tal confusi on dura un turno. Todo da no realizado a un enemigo se multiplica por la cantidad de Priests presentes en el equipo. Sus poderes son Sky Attack, Dig, Surf y Flamethrower.

Como se ha dicho anteriormente, el da no que ocasiona un poder depende tanto del tipo de este como del tipo, especialidad y clase de la criatura que lo recibe. La evaluaci on de cu anto da no se hace se procesa en dos pasos. Primero, se compara el da no que le corresponde basado en el tipo con el da no que corresponde seg un la especialidad. Posteriormente, se realiza el mismo proceso de comparaci on con el resultado de la operaci on anterior, mas esta vez con el da no que le corresponde seg un la clase. La forma de comparar dos da nos es la siguiente: si ambos da nos son menores o iguales a 1, o ambos mayores o iguales a 1, se multiplican. En otros casos, se utiliza el da no que especica la clasicaci on de mayor preferencia. El orden de prioridad de las clasicaciones es, en orden decreciente: Clase, Especialidad, Tipo.

4.6.

Poderes

Son las habilidades que pueden utilizar los personajes y enemigos. Existen poderes basados en magia (requieren y consumen MP) y poderes de car acter f sico (no requieren MP; generalmente menos potentes). Todo poder tiene un tipo, el cual opera seg un las reglas de combate ya estipuladas. Adem as, cada poder tiene una base de ataque, la cual se pondera por el nivel del personaje o enemigo que lo utilice para obtener el da no en HP que causar a. Este da no es un n umero entero (debe aproximarse al entero m as cercano en caso de calcularse un da no decimal). La lista de poderes disponibles se encuentra en el Cuadro 2.

Nombre Water Gun Hydropump Surf Bubblebeam Earthquake Mud Shot Fissure Dig Aerial Ace Sky Attack Glowing Arrow Air Cutter Fire Blast Inferno Incinerate Flamethrower

Tipo Agua Agua Agua Agua Tierra Tierra Tierra Tierra Aire Aire Aire Aire Fuego Fuego Fuego Fuego Muerte

Muerte

Muerte

Muerte

Da no 80 + lvl 10 Instant anea 15 % 80 + lvl 3 lvl2 + 50 90 + lvl 2,5 45 + lvl 25 Instant anea 20 % 2 0 , 5 lvl + 75 lvl 15 + 70 Instant anea 30 % 60 + lvl2 3 lvl + 60 Instant anea 25 % 2 lvl2 4 lvl + 10 lvl 20 + 30

Costo (MP) Probabilidad 5 + lvl 70 + e lvl 50 + 4,2 lvl lvl2 + 50 25 + 5 lvl 30 + lvl 90 + e lvl 2 30 + lvl 60 + 3 lvl 3 50 + 2 e lvl 30 + lvl 3 lvl + 20 3 50 + 1,5 e lvl 2 50 + lvl 5 lvl + 69 3 lvl 2

Probabilidad

Probabilidad

Probabilidad

Cuadro 2: Lista de poderes y sus caracter sticas.

Adicionalmente, distintos poderes pueden tener otro tipo de efecto sobre las unidades, dependiendo del tipo del poder y el area de especializaci on de la unidad. Estos efectos se detallan en el Cuadro 3. Si dentro de la conformaci on de un personaje/enemigo existen debilidades o fortalezas que no son coherentes entre si, se priorizaran en el siguiente orden, de mayor a menor prioridad: Clases, Especializaci on, Tipo. Casos compatibles/coherentes son acumulativos. Por ejemplo, tomemos un Archer de Fuego. Este personaje, por su tipo, cada vez que recibe un ataque de tipo Agua el da no inigido por este es x2, pero por especializaci on los Ranger anulan ataques de agua. En este caso, tomando en cuenta el orden de prioridad, los ataques de tipo Agua no da nan a este personaje. Lo anterior no quiere decir que este personaje no siga siendo de tipo fuego. En otro contexto, este personaje s recibir a el doble de da no por ataques tipo Tierra.

Especializaci on Agua / Tipo Caster Velocidad al 85 %, 1 turno Doble da no Da no anulado

Aire Velocidad al 80 %, 1 turno 20 de da no MP Doble velocidad

Fuego 2 HP de da no por turno, 5 turnos Restaura 15 HP Doble da no

Tierra Doble da no

Neutral

Melee Ranger

Contrincante pierde 1 turno

Cuadro 3: Multiplicadores por asociaci on de tipo.

4.7.

Curandero

Como ya fue mencionado, existe un curandero en tu equipo que ofrece 3 tratamientos tras nalizar con exito cada enfrentamiento, los cuales cuestan GP y su precio var a de acuerdo al sector (el curandero sufre de una desafortunada mezcla de des ordenes de personalidad y un pobre entendimiento de econom a). Tales tratamientos son los siguientes. Potion: restaura el 30 % del HP total del personaje que la consume. Ether: restaura el 20 % del MP total del personaje que lo consume. Phoenix Down: revive un personaje y restaura el 10 % de su HP total.

5.

Lo que tu programa debe recibir.

Existen 2 tipos de archivos que el programa debe recibir: un archivo inicial (determina las condiciones de inicio de la simulaci on interactiva) y varios archivos sector (denen las caracter sticas de los mismos). Como ya se mencion o, se tratar an con 3 formatos para ambos tipos de archivo.

5.1.

Formato .txt
Archivo Inicial: sigue el patr on presente a continuaci on. Numero de personajes: <Cantidad Personajes>\n Personajes: <ClasePersonaje1>|<TipoPersonaje1>|<NivelPersonaje1>|

<NombrePersonaje1>\n ...\n (la l nea Personajes se repite por el n umero de personajes especificado) <ClasePersonajeN>|<TipoPersonajeN>|<NivelPersonajeN> |<NombrePersonajeN>\n Oro inicial: <OroInicial>\n Sector inicial: <PathSectorInicial> Archivo Sector: sigue el patr on presente a continuaci on. Final: <Si es el ultimo sector (true o false)>\n Caminos: <N umero de caminos (int)>\n |<PathRelativoCamino1>|\n ...\n (la l nea Caminos se repite por el n umero de caminos especificado) |<PathRelativoCaminoN>|\n Potion: <Costo Potion>\n Ether: <Costo Ether>\n Phoenix Down: <Costo Phoenix Down>\n Tesoro: <Valor del Teroso>\n Numero de enemigos: <Cantidad Enemigos>\n Enemigos: <ClaseEnemigo1>|<TipoEnemigo1>|<NivelEnemigo1>|<OroEnemigo1>\n ...\n (la l nea Enemigos se repite por el n umero de enemigos especificado) <ClaseEnemigoN>|<TipoEnemigoN>|<NivelEnemigoN>|<OroEnemigoN>\n Historia: <Historia del Sector>

5.2.

Formato binario .ffx


Archivo Inicial: la informaci on se almacena en secuencias de bytes que siguen el siguiente patr on. 4 bytes corresponden al n umero de personajes (Int32). <El siguiente bloque se repite por el n umero de personajes> 10 bytes de Clase. 6 bytes de Tipo. 4 bytes de Nivel (Int32). 4 bytes de Largo de nombre en bytes (X Bytes) (Int32). X bytes de Nombre. <Fin bloque> 4 bytes de Oro Inicial. El resto del archivo corresponde al Path relativo al sector actual. Archivo Sector: la informaci on se almacena en secuencias de bytes que siguen el siguiente patr on. 1 byte indica si es el final file o no. 1 Int32 indica el n umero de rutas desde el sector (llamemos a este n umero paths). <El siguiente bloque bloque va paths veces, ya que cada uno representa un path> 4 Bytes Largo (int32) (indica el largo en chars del path). Largo Char string que contiene el path (arreglo de chars de largo Largo). <Fin bloque> 1 byte indican el costo de una Potion. 1 byte indican el costo de un Ether. 1 byte indican el costo de una Phoenix Down. 1 Int32 es el valor del tesoro en el sector. 1 Int32 indica el numero de enemigos (llamemos este n umero enemigos). 6

<El siguiente bloque va enemigos veces, ya que cada uno representa un enemigo> 10 bytes de Clase 6 bytes de Tipo 4 bytes de Nivel (Int32) 4 bytes de Oro (Int32) <Fin bloque> El resto del archivo corresponde al string de Historia.

5.3.

Formato .xml
Archivo Inicial: sigue el patr on presente a continuaci on. <?xml version=1.0 encoding=utf-8?> <DatosIniciales PathSectorIncial=.\sectores\sectorEjemplo.xml OroInicial=150(UnNumero) > <Personajes> <Personaje Nombre=Vrolock Clase=Warrior/Paladin/Gunslinger/Arquero/Wizard/Priest Tipo=Agua/Aire/Fuego/Tierra/Neutral"Nivel=8(UnNumero) /> <Personaje Nombre=Voko Clase=Warrior/Paladin/Gunslinger/Arquero/Wizard/Priest Tipo=Agua/Aire/Fuego/Tierra/Neutral"Nivel=8(UnNumero) /> ...(El bloque actual se repite tantas veces como el n umero de personajes total) </Personajes> </DatosIniciales> Archivo Sector: sigue el patr on presente a continuaci on. <?xml version=1.0 encoding=utf-8?> <Sector EsFinal=True/False"Historia=Esta es una historia de ejemplo. Tesoro=500(UnNumero)> <Paths> <Path direccion=.\ejemplo.txt/> <Path direccion=.\otroEjemplo.xml/> ...(El bloque actual se repite tantas veces como el n umero de paths total) </Paths> <Enemigos> <Enemigo Clase=Warrior/Paladin/Gunslinger/Arquero/Wizard/Priest Tipo=Agua/Aire/Fuego/Tierra/Neutral"Nivel=8(UnNumero) Oro=10(Un Numero) /> <Enemigo Clase=Warrior/Paladin/Gunslinger/Arquero/Wizard/Priest Tipo=Agua/Aire/Fuego/Tierra/Neutral"Nivel=8(UnNumero) Oro=10(Un Numero) /> ...(El bloque actual se repite tantas veces como el n umero de enemigos total) </Enemigos> <Costos Potion=5(UnNumero) Ether=4(UnNumero) PhoenixDown=10(UnNumero) /> </Sector>

6.

Lo que tu programa debe entregar.

El progreso del juego debe mostrarse continuamente. Al ingresar a un sector, debe mostrarse la historia que contiene y una lista de los enemigos presentes y sus clases (todo esto previo al enfrentamiento). Cada vez que un turno nuevo comienza, debe indicarse en pantalla el nombre del personaje de tal turno. A continuaci on, el usuario debe seleccionar un poder y un enemigo objetivo de tal poder. El da no ocasionado por tal acci on debe indicarse nuevamente en pantalla, as como su efectividad relativa (dependiente del tipo del poder y del enemigo) y si ocurri o una muerte o no. En caso de ser el turno de un enemigo, debe mostrarse en pantalla su clase, el poder utilizado, 7

el personaje afectado, el da no causado, la efectividad del ataque y si ocurri o una muerte o no. Si se logra vencer a los enemigos se le otorga a los personajes el oro que estos pose an (debe indicarse en pantalla), se informa si en el sector exist a alg un tesoro y el valor de este. Luego se da la opci on de pedir alg un tratamiento al curandero. Es en este momento que el usuario puede seleccionar cu al de los caminos seguir a. Adem as, siempre antes de abandonar un sector, ya sea luego de una victoria o de huir, debe modicar el archivo correspondiente para indicar tal hecho. En el caso en que los personajes huyan, los enemigos permanecer an con el da no que se les ha inigido. En caso de victoria, los enemigos permanecen muertos. Cabe mencionarse que no es posible acceder a los servicios de curaci on en un sector donde ya tuvo la opci on de hacerlo. En caso de muerte de todos los personajes en un sector, estos regresan al sector de procedencia sin efectuar cambios donde fueron derrotados.

7.

Consideraciones Adicionales.
Los archivos .txt pueden tanto traer como no el caracter de retorno (\r) al nal de cada l nea. El alumno debe entregar un diagrama de clases junto con su soluci on. Este diagrama debe indicar las clases presentes, sus relaciones de composici on y herencia, los m etodos con override y una breve descripci on de cada clase y de la modelaci on general. Este diagrama ser a evaluado. La l ogica (o inteligencia articial) de los enemigos debe permitir que estos puedan ocupar todos sus ataques. Es decir, no es v alido como l ogica que el enemigo siempre haga la misma acci on. La l ogica m nima es realizar las acciones aleatoriamente o con cierta probablilidad. Todo elemento no mencionado, no especicado o designado como arbitrario en el enunciado queda a criterio personal del programador, siempre que no intervenga con alg un requerimiento explicitado de la tarea.

8.

Restricciones y alcances
Tu programa debe ser desarrollado en el lenguaje C#, sobre .Net Framework 4.0. El entorno de desarrollo a utilizar debe ser Microsoft Visual Studio 2010 (ojal a en su versi on Professional ).

9.

Entrega
Fecha/hora: Martes 11 de septiembre de 2012 / 23:59. Lugar: En repositiorios SVN personales, al interior del directorio Tarea2.

Debe subir la soluci on de Visual Studio completa en c odigo, sin ejecutables. Tareas que no compilen o no cumplan con las restricciones se naladas en este enunciado tendr an la calicaci on m nima (1.0).

Vous aimerez peut-être aussi