Tu función HurtPlayer() funciona, pero como estás pasando un valor literal al método Damage(), ese valor solo puede cambiar cuando cambies manualmente el código. En este ejercicio, vas a flexibilizar tu función HurtPlayer() con el valor de retorno de otra función que crearás.
En la lección 4: Tiempo para practicar, has utilizado condicionales para calcular cuánto daño o curación deben hacer las pociones, en función de la salud del jugador. Vas a recuperar parte de ese código en una función llamada CalculateDamage(). Devolverá un valor de tipo float. Almacenarás ese valor en una constante que luego pasarás al método Damage().
-
Crea una función nombrada
CalculateDamage(). Dentro de la función, declara dos constantes de tipofloat:MinHealthyPotionDamageAmount. Declara una variable de tipofloatllamadaPlayerHealth.CalculateDamage() : float = MinHealth : float = 1.0 PotionDamageAmount: float = 80.0 var PlayerHealth : float = 100.0 - Crea una expresión
if...else if...elseque devuelva uno de los tres valores:PotionDamageAmount, siPlayerHealthes mayor quePotionDamageAmount.PlayerHealth-MinHealth, siPlayerHealthes menor quePotionDamageAmountpero mayor queMinHealth.PlayerHealth, siPlayerHealthes menor o igual queMinHealth
# Si la cantidad de daño no elimina al jugador, haz esa cantidad de daño if (PlayerHealth > PotionDamageAmount): return PotionDamageAmount else if (PlayerHealth > MinHealth): # Dar al jugador una oportunidad más si su salud es baja return PlayerHealth - MinHealth else: # Eliminar al jugador return PlayerHealthEl efecto de este código es que dará al jugador una segunda oportunidad si bebe una poción que normalmente lo eliminaría.
-
Ahora que has creado una función que devuelve un resultado útil, necesitas almacenar ese resultado. Declara una constante
floatllamadaDamageToDo, e inicialízala con el valor de retorno deCalculateDamage(). Añade esto a tu funciónHurtPlayer().HurtPlayer() : void = Playspace : fort_playspace = GetPlayspace() AllPlayers : []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): DamageToDo: float = CalculateDamage() FortniteCharacter.Damage(50.0) -
Ahora, por fin, ¡es hora de utilizar el resultado! Pasa
DamageToDocomo un argumento aDamage(). Añade una funciónPrint()para que puedas ver exactamente lo que devuelveCalculateDamage().HurtPlayer() : void = Playspace : fort_playspace = GetPlayspace() AllPlayers : []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): DamageToDo: float = CalculateDamage() Print("Daño para hacer: {DamageToDo}") FortniteCharacter.Damage(DamageToDo)
Ahora, en lugar de que tu llamada al método Damage() utilice un valor literal, utiliza el valor devuelto por CalculateDamage(). Ya deberías haber escrito la llamada a HurtPlayer() de un ejercicio anterior, pero no olvides comprobarlo.
Secuencia de comandos completa
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Playspaces }
using { /Verse.org/Simulation }
using { /Verse.org/Verse }
hello_world_device := class(creative_device):
# Se ejecuta cuando se inicia el dispositivo en un juego en ejecución
OnBegin<override>()<suspends>:void=
HurtPlayer()
Print("Jugador herido")
CalculateDamage() : float =
MaxHealth : float = 100.0
MinHealth : float = 1.0
PotionDamageAmount: float = 80.0
var PlayerHealth : float = 100.0
# Si la cantidad de daño no elimina al jugador, haz esa cantidad de daño
if (PlayerHealth > PotionDamageAmount):
return PotionDamageAmount
else if (PlayerHealth > MinHealth):
# Dar al jugador una oportunidad más si su salud es baja
return PlayerHealth - MinHealth
else:
# Eliminar al jugador
return PlayerHealth
HurtPlayer() : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
DamageToDo: float = CalculateDamage()
Print("DamageToDo: {DamageToDo}")
FortniteCharacter.Damage(DamageToDo)
Por tu cuenta, intenta crear una función similar a CalculateDamage() que devuelva un resultado útil para HealPlayer(). Si te atascas, repasa Lección 4: ¡Te toca practicar! para inspirarte.