RodrigoToroIcarte / IIC2113-2023-1

6 stars 0 forks source link

[E3] Tratar la el string de effect de cada carta #187

Open ferperezh opened 12 months ago

ferperezh commented 12 months ago

Hola escribo para preguntar sobre la parte de aplicar el effecto de cada carta. Como es un string sobre lo que se debe hacer puedo tener un json con lo que se debe hacer para cada tarjeta o con la descripcion yo ya debo aplicar lo que dice ?. Mi pregunta es si previamente con la informacion de cada carta prepararlas.

RodrigoToroIcarte commented 11 months ago

Creo que lo más fácil es linkear el título de la carta con su efecto dentro de tu código. Por ejemplo, tener una clase abstracta Effect de la que hereden los distintos efectos de las cartas. Luego puedes tener un Factory que dado el título de la carta retorna su efecto.

Igual en otros semestres algunos estudiantes hicieron lo que propones. Unos agregaron json auxiliares. Otros tomarón el texto de la habilidad y usaron keywords para saber a qué métodos invocar cuando se ejecuta el efecto. Pero al menos yo no recomiendo esta vía.

berrazuriz3 commented 11 months ago

Hola, para el caso de hacer la clase abstracta y el factory sería "legal" usar un switch case para retornar los efectos según la carta?

Muchas gracias

RodrigoToroIcarte commented 11 months ago

Sí, claro. Mira las diapos de la clase 13 (sección 1). Ahí se discuten casos donde un switch es bueno/necesario. El ejemplo clásico es en un factory que tiene que crear objetos polimórficos.

Clean code en el cap 3 discute esto de forma explícita: Screenshot from 2023-10-10 22-08-56

... y luego da un ejemplo de un switch case usado en un factory: Screenshot from 2023-10-10 22-09-26

Yo igual discuto esto en bastante detalle aquí: https://github.com/RodrigoToroIcarte/IIC2113-2023-1/issues/45. Mi discusión se centra en el tema de la habilidades, pero lo mismo aplica para los efectos de cartas :+1:

nicolasgarciaes commented 11 months ago

Hola, tengo una consulta sobre el uso de "factory", específicamente en relación con la creación de efectos para las cartas y el formato de los archivos. Según un anuncio anterior, se establece que "El formato cuenta con 0.4 puntos. Cada archivo debe seguir una convención en la que el nombre del archivo corresponde exactamente con la clase, enum o interfaz que se defina en su interior".

Dada esto, ¿es necesario que genere un archivo independiente para cada clase involucrada en la "EffectFactory"? ¿O se contempla la posibilidad de que múltiples clases puedan estar contenidas en un único archivo llamado "IEffect"?

RodrigoToroIcarte commented 11 months ago

Hay que tener una clase por archivo. No más, no menos. Si quieres poner varias clases en un archivo debido a que están muy relacionadas entre si, te recomiendo crear carpetas. Así cada clase queda en un archivo distinto y todas las clases relacionadas quedan en la misma carpeta.