Tu función HurtPlayer()
está funcionando, pero ya que estás pasando un valor literal al método Damage()
, ese valor solo puede cambiar cuando cambias el código manualmente. En este ejercicio, vas a hacer que tu función HurtPlayer()
sea más flexible con el valor devuelto de otra función que crearás.
En Lección 4: ¡Hora de practicar!, usaste condicionales para calcular en qué medida se debe aplicar el daño o la curación con las pociones, según el estado del jugador. Vas a traer parte de ese código en una función denominada CalculateDamage()
. Devolverá un valor de tipo float
. Almacenarás ese valor en una constante que posteriormente pasarás al método Damage()
.
-
Crea una función con el nombre
CalculateDamage()
. Dentro de la función, declara dos constantes de tipofloat
:MinHealth
yPotionDamageAmount
. Declara una variable de tipofloat
llamadaPlayerHealth
.CalculateDamage() : float = MinHealth : float = 1.0 PotionDamageAmount: float = 80.0 var PlayerHealth : float = 100.0
- Crea una expresión
if
…else if
…else
que devuelva uno de los tres valores:PotionDamageAmount
, siPlayerHealth
es mayor quePotionDamageAmount
PlayerHealth
-MinHealth
, siPlayerHealth
es menor quePotionDamageAmount
pero mayor queMinHealth
PlayerHealth
, siPlayerHealth
es menor que o igual aMinHealth
# Si la cantidad de daño no eliminaría al jugador, inflige esa cantidad de daño if (PlayerHealth > PotionDamageAmount): return PotionDamageAmount else if (PlayerHealth > MinHealth): # Otorga al jugador una oportunidad adicional si su nivel de vida es bajo return PlayerHealth - MinHealth else: # Elimina al jugador return PlayerHealth
El efecto de este código es que le dará al jugador una segunda oportunidad si bebe una poción que normalmente lo eliminaría.
-
Ahora que creaste una función que devuelve un resultado útil, es necesario que almacenes ese resultado. Declara una constante
float
con el nombreDamageToDo
e inicialízala con el valor devuelto deCalculateDamage()
. Agrega esto a la 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)
-
Llegó el momento de usar el resultado. Pasa
DamageToDo
como un argumento deDamage()
. AgregaPrint()
para que puedas ver exactamente lo queCalculateDamage()
devuelve.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 por causar: {DamageToDo}") FortniteCharacter.Damage(DamageToDo)
Ahora, en vez de que tu llamada al método Damage()
utilice un valor literal, esta usa el valor devuelto de CalculateDamage()
. Ya debes haber escrito la llamada a HurtPlayer()
en un ejercicio anterior, pero no te olvides de revisarla.
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 el dispositivo se inicia 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 eliminaría al jugador, inflige esa cantidad de daño
if (PlayerHealth > PotionDamageAmount):
return PotionDamageAmount
else if (PlayerHealth > MinHealth):
# Otorga al jugador una oportunidad adicional si su nivel de vida es bajo
return PlayerHealth - MinHealth
else:
# Elimina 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("Daño por causar: {DamageToDo}")
FortniteCharacter.Damage(DamageToDo)
Ahora por tu cuenta, intenta crear una función similar a CalculateDamage()
que devuelva un resultado que sería útil para HealPlayer()
. Si te atascas, revisa la Hora de practicar de la Lección 4 para obtener algunas ideas.