¡Listos, preparados... a obtener!

Tienes que construir una arquitectura rudimentaria que simule un sistema de distribución de puntos de XP entre dos estudiantes que resuelven una serie de desafíos determinados en Edabit.

Paso 1: Construye una clase Challenge

Los parámetros del constructor son id y level. El id será el identificador numérico del desafío, y level será un código compuesto por dos letras mayúsculas:

  • "VE" = "Very Easy"
  • "EA" = "Easy"
  • "ME" = "Medium"
  • "HA" = "Hard"
  • "VH" = "Very Hard"
  • "EX" = "Expert"

Paso 2: Construye un método para la clase Challenge

El nombre del método dentro de la clase Challenge es points().

El método debe devolver la cantidad de puntos obtenidos al resolver un desafío, según el nivel del desafío:

  • VE = 5 XP
  • EA = 10 XP
  • ME= 20 XP
  • HA= 40 XP
  • VH = 80 XP
  • EX = 120 XP

Paso 3: Construye una clase User

Los parámetros del constructor son name, xp y log. name será, sencillamente, el nombre de usuario. xp es el acumulador que almacena los puntos de XP obtenidos. log es una especie de diario del usuario: es un arreglo que almacenará el id de los desafíos resueltos por el usuario.

Paso 4: Construye un método para la clase User

El nombre del método que debes implementar dentro de la clase User es newSolvedChallenge() y aceptará como parámetro un objeto de la clase Challenge.

El método debe incrementar el xp del usuario y almacenar el id del desafío en el arreglo log.

Paso 5: Declara las instancias necesarias para las pruebas

Ahora que todo está listo, debes configurar el ejercicio y declarar las instancias de las clases creadas para que se puedan realizar las pruebas. Comienza con las declaraciones de los usuarios; son dos:

  • user1name = "Madam" | xp = 0 | log = []
  • user2name = "Steve" | xp = 0 | log = []

Ahora, declara los desafíos; son seis:

  • challenge1id = 1 | level = "VE";
  • challenge2id = 2 | level = "EA";
  • challenge3id = 3 | level = "ME";
  • challenge4id = 4 | level = "HA";
  • challenge5id = 5 | level = "VH";
  • challenge6id = 6 | level = "EX";

Finalmente, debes declarar cuáles son los desafíos resueltos por los usuarios, usando el setter que implementaste anteriormente:

  • Madam resuelve los siguientes desafíos, en este orden:

    • challenge1 , challenge4 , challenge6
  • Steve resuelve los siguientes desafíos, en este orden:

    • challenge5 , challenge3, challenge2

Paso 6: Mecánica de las pruebas

Las pruebas verificarán si, después de llamar a las propiedades y métodos de la instancia que creaste, se devuelve el resultado esperado. Por lo tanto, no tienes que devolver un resultado, sino asegurarte de que todo esté configurado de acuerdo con las instrucciones.

Ejemplos

user1.name ➞ "Madam"

user2.xp ➞ 110
// Steve has solved challenges 5, 3 and 2 (80 + 20 + 10 points)

user1.log ➞ [1, 4, 6]
// Remember to respect the order given in Instructions for to store data into the log

challenge4.level ➞ "HA"

challenge3.id ➞ 3

challenge1.points ➞ 5

Notas

  • Al implementar métodos puedes usar funciones normales o una combinación de set/get. Consulta los Resources para obtener una idea general de la diferencia entre estos dos procedimientos y, si deseas dejar tu opinión, usa la pestaña Comments.
  • Si quieres profundizar, consulta un punto de vista negativo sobre los setters & getters.