Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4.1. Destructuracion Ejercicios 444
4.1. Destructuracion Ejercicios 444
Datos................................................................................................................................................... 2
Ejercicios ............................................................................................................................................. 3
getMoves() ................................................................................................................................... 3
getPrimaryAbility() ............................................................................................................... 4
getWeaknesses() ........................................................................................................................ 4
getResistances() ...................................................................................................................... 4
resistsType() ............................................................................................................................ 4
resistsMove() ............................................................................................................................ 4
isWeakAgainst() ........................................................................................................................ 4
isStrongAgainst() .................................................................................................................... 4
addAbility()............................................................................................................................... 4
addMove() ..................................................................................................................................... 5
removeMove()............................................................................................................................... 5
getAttackModifier() ............................................................................................................... 5
getAttackLog() .......................................................................................................................... 5
calculateDamage() .................................................................................................................... 5
battle() ....................................................................................................................................... 6
A tener en cuenta:
Datos
Ejercicios
getMoves()
• Crear una función getMoves que tome como argumento un pokémon y devuelva la
lista de movimientos
getPrimaryAbility()
getWeaknesses()
• Crear una función getWeaknesses que tome como argumento un pokémon y devuelva
la lista de tipos contra los que es débil
getResistances()
resistsType()
• Crear una función resistsType que tome como argumentos un pokémon y un tipo y
devuelva true si el pokémon es resistente a dicho tipo
resistsMove()
isWeakAgainst()
• Crear una función isWeakAgainst que tome como argumento un objeto con dos
propiedades, attacker y attacked, donde cada valor es un pokémon (p.ej. {
attacker: pikachu, attacked: squirtle }) y devuelva true si el pokémon atacado
es débil frente al tipo de pokémon que lo ataca
isStrongAgainst()
• Crear una función isStrongAgainst que tome como argumento un objeto con dos
propiedades, attacker y attacked, donde cada valor es un pokémon (p.ej. {
attacker: pikachu, attacked: squirtle } ) y devuelva true si el pokémon atacado
es resistente al tipo de pokémon que lo ataca
addAbility()
• Crear una función addAbility que tome como argumentos un pokémon y un objeto
con un tipo de habilidad y el nombre de la misma (p. ej.: { secondary: "Discharge"
}) y devuelva el pokémon con la habilidad agregada
addMove()
removeMove()
getAttackModifier()
• Crear una función getAttackModifier, tome como argumento un objeto con dos
propiedades, attacker y attacked, donde cada valor es un pokémon (p.ej. {
attacker: pikachu, attacked: squirtle }) y devuelva:
o 2, si el pokémon atacado es débil (weakness) contra el tipo del pokémon que
ataca
o 0,5, si el pokémon atacado es resistente (resistances) contra el tipo del
pokémon que ataca
o 1, si no es débil ni resistente
getAttackLog()
• Crear una función getAttackLog, que tome como argumento un objeto con las
siguientes propiedades:
{
attacker: "Squirtle",
attacked: "Pikachu",
move: "Water Gun",
damage: 12,
modifier: "weak" // otros valores: "resistant", "normal"
}
Y que devuelve un string con la siguiente plantilla:
• Crear una función calculateDamage que tome como un argumento un objeto con la
siguientes propiedades
o attack es el ataque del pokémon que ataca
o defense es la defensa del pokémon siendo atacado
o modifier el modificador del daño según el tipo del atacante y del atacado y
devuelva el daño ocasionado. El daño se calcula con la siguiente fórmula:
• Crear un función battle que tome como argumentos dos pokémons. La función debe
simular una batalla y devolver el resultado de la misma. Las reglas de la misma son:
o Por ronda, cada pokémon ataca al contrario
o Comienza atacando el pokémon con más velocidad (speed)
o La batalla termina cuando la vida (hp, hit points, puntos de golpe) de un
pokémon llega a 0 o menos
o El daño se obtiene con la función calculateDamage y se resta a la vida del
pokémon atacado
o Se tiene que guardar un registro o historial del ataque en cada turno, usando
lo que devuelve la función getAttackLog
o El movimiento se elige de forma aleatoria en cada ataque
o El objeto que debe devolver como resultado debe seguir la siguiente
estructura:
{
rounds: 1,
results: {
winner: {
name: "Pikachu",
hp: 12 // vida restante
},
losser: {
name: "Squirtle",
hp: 0
}
},
history: [
"Squirtle used Water Gun! Pikachu lost 12 HP!",
"Pikachu used Thunderbold! Squirtle lost 24 HP! It's super effective!"
]
}