Prácticas M17 Unidad Formativa 3

De Wiket
Salta a la navegació Salta a la cerca

TODO el código ha de estar comentado tal y como se ha explicado en clase i correctamente indentado, de no ser así se aplicará -1 punto a la práctica

Práctica 1: Creando clases

  1. Crea una clase llamada personajeGuerrero que tenga los siguientes atributos: Nombre(String), Arma(int), Fuerza(int), Aramadura(int), Vida(int), Mochila(Array de Obj).
  2. Crea un constructor por defecto que asigne los siguiente valores: Nombre = "Gear" + un número aleatorio de 3 cifras, Arma = 0, Fuerza = 2, Armadura = 1, Vida = 20, Mochila = Array de 5 posiciones de tipo Obj.
  3. Crea un constructor con parámetros pero ha de cumplir siempre las siguientes restricciones: Arma = 0 o 1, Fuerza = 1 - 5, Armadura = 0 - 4, Vida = 15 - 50, Mochila = 5 - 20
  4. Crea un método llamado ataque y como parámetro le pasaremos un personajeGuerrero. Este método lo que hará es si el personaje que ataca tiene 2 de Fuerza representa que tiene 2D6 para atacar y si armadura tiene 1 quieres decir tiene 1D6 para defenderse de modo que para representar los dados de 6 caras (D6 = dado de 6 caras) generaremos un número random entre 1-6 por cada dado de fuerza y lo mismo por cada dado de armadura del defensor, después restaremos el valor los dados de ataque al valor de los dados de defensa. Si el resultado es positivo se lo restamos a la vida del personaje defensor, sino no pasa nada.PISTA: Podéis usar la clase DadoD6 que hemos usado en los ejercicios.
  5. Crea un método llamado estado que imprima por pantalla el nombre del guerrero y la vida.
  6. Crea dos personajesGuerrero, el primero usando el constructor por defecto, el segundo con los siguientes parámetros: Nombre: Conan, Arma = 0, Fuerza = 3, Armadura = 3, Vida = 30, Mochila = 5. Imprime el estado de los 2 guerreros y después realiza un ataque con Conan y vuelve a imprimir el estado. Realiza 3 ataques con cada Guerrero (recuerda imprimir el estado de los guerreros después de cada ataque)

Criterios de puntuación

  • 1,5 puntos: pregunta 1
  • 2 puntos pregunta 2
  • 2 puntos pregunta 3
  • 3 puntos pregunta 4
  • 0,5 puntos pregunta 5
  • 1 punto pregunta 6

Práctica 2: Métodos, constructores y sobrecarga

  1. Crea una clase mKart con los siguientes atributos: Nombre(String), Aceleración(int), Velocidad(int), Peso(double), Manejo(int). Aceleración, velocidad, peso y manejo solo admiten valores entre 0 y 100 Crea un constructor por defecto, un constructor por parámetros y un constructor por copia. Crea 2 karts con las características que desees y un 3 kart haciendo uso del constructor por copia, después cámbiale el nombre. Crea los getters y setters para los atributos de la clase.
  2. Crea un método llamado info que pinte por pantalla toda la información relativa al kart.
  3. Crea un método llamado mejorAtributo que devuelva el atributo más alto del kart. Crea otro método llamado peorAtributo que devuelva el atributo más bajo del kart. Los dos métodos devuelven un String que es el nombre del atributo. Pon ejemplos para ver que el método funciona correctamente
  4. Crea un método llamado bestKart que reciba como parámetro un kart. El método ha de comparar los 4 atributos de cada kart el que tenga más atributos buenos es el mejor kart. Ha de devolver un kart. Pon ejemplos para ver que el método funciona correctamente
  5. Sobrecarga el método bestKart para pasarle por parámetro un número indefinido de karts y que devuelva el mejor kart. Pon ejemplos para ver que el método funciona correctamente

Criterios de puntuación

  • 2 puntos: pregunta 1
  • 1 puntos pregunta 2
  • 2 puntos pregunta 3
  • 3 puntos pregunta 4
  • 2 puntos pregunta 5

Práctica 3: Jugando con la herencia y el polimorfismo

  1. Vamos a crear una serie de clases que nos permitan representar ciertas interacciones de un juego de rol. Crearemos 3 clases abstractas: Clase Personaje (Atributos: Nombre, Clase, Fuerza, Resistencia, Arma, Vida, Mochila; Métodos: Atacar "método abstracto", Equipar y Desequipar), Clase Dado(Atributos: Resultado; Métodos:tirar "método abstracto"), Clase Item(Atributos:Clase, Tipo, Nombre, Modificador, Métodos: usar "método abstracto"). Crea los constructores por defecto para cada clase.
  2. Ahora crearemos la clase Guerrero (posee como atributo propio Armadura) y Mago(posee como atributos propios Maná y Magia. Como método propio lanzarHechizo) que heredarán de la clase personaje.Todos los personajes tienen una mochila de 10 posiciones de items. También crearemos la clase DadoD6 y DadoD10 que heredarán de la clase dado y por último las clases BolaDeFuego(Atributos: ManáNecesario, Daño), PocionDeMana y PocionDeVida que heredarán de Item.
  3. Crear un Guerrero (Nombre = "Geralt de Rivia", Clase = 0, Fuerza = 4, Resistencia = 4, Arma = 0, Vida = 40, Armadura = 3). Crear un Mago (Nombre = "Raistlin", Clase = 1, Fuerza = 1, Resistencia = 2, Arma = 1, Vida = 25, Maná = 30). Ahora queremos que nuestros personajes puedan equipar objetos para poder usarlos, asi que al guerrero le tendríamos que equipar con 2 pociones de vida y al mago con 1 bola de fuego, 1 poción de maná y 1 poción de vida. Equipar un item consiste en tener ese item dentro de la mochila. Desequipar un item consiste en sacarlo de la mochila. Usar un item consiste en aplicar sus efectos y luego eliminarlo de la mochila.
    • NOTA:
      • Poción de vida -> Clase = -1 (-1 todas las clases pueden usar este objeto), Tipo = 0 (consumible, es decir, una vez que se usa se tiene que eliminar), Nombre = "Poción de Vida", Modificador = 10
      • Poción de maná -> Clase = 1 (1 solo la clase mago puede usar este objeto), Tipo = 0 (consumible, es decir, una vez que se usa se tiene que eliminar), Nombre = "Poción de Maná", Modificador = 15
      • Bola de fuego -> Clase = 1 (1 solo la clase mago puede usar este objeto), Tipo = 1 (NO consumible), Nombre = "Bola de Fuego", Modificador = 0, ManaNecesario = 10, Daño = 12
  4. Por último queremos que estos personajes se puedan atacar. Atacar consiste en lanzar tantos dados de 10 como indique el atributo fuerza del personaje, sumar ese resultado y restarlo al resultado de tirar tantos dados de 6 como indique la propiedad resistencia del personaje defensor. Hay que tener en cuenta que si el personaje tiene Armadura (ejemplo Armadura = 3) el valor de la armadura se suma al resultado de los dados de resistencia que tira el defensor. Por otro lado el mago puede atacar con arma (se aplica el método atacar) o lanzar un hechizo, en este último caso tenemos que comprobar que el personaje tiene maná suficiente para lanzar la bola de fuego el Atributo Daño es directamente el daño provocado al defensor menos su tirada de dados de 6 de resistencia (en caso de hechizos el atributo Armadura no puede usarse.

Criterios de puntuación

  • 2,5 puntos: pregunta 1
  • 2,5 puntos pregunta 2
  • 2,5 puntos pregunta 3
  • 2,5 puntos pregunta 4