La tua funzione HurtPlayer() funziona, ma poiché stai passando un valore letterale al metodo Damage(), quel valore può cambiare soltanto quando modifichi manualmente il codice. In questo esercizio renderai la funzione HurtPlayer() più flessibile con il valore restituito da un'altra funzione che creerai.
Nella Lezione 4: È ora di fare pratica, hai utilizzato i condizionali per calcolare la quantità di danni o guarigione causati dalle pozioni, a seconda della salute del giocatore. Stai per riportare parte di quel codice in una funzione chiamata CalculateDamage(). Verrà restituito un valore di tipo float. Memorizzerai quel valore in una costante che passerai al metodo Damage().
-
Crea una funzione denominata
CalculateDamage(). All'interno della funzione, dichiara due costanti di tipofloat:MinHealthePotionDamageAmount. Dichiara una variabile di tipofloatchiamataPlayerHealth.CalculateDamage() : float = MinHealth : float = 1.0 PotionDamageAmount: float = 80.0 var PlayerHealth : float = 100.0 - Crea un'espressione
if…else if…elseche restituisce uno di questi tre valori:PotionDamageAmount, sePlayerHealthè maggiore diPotionDamageAmountPlayerHealth-MinHealth, sePlayerHealthè minore diPotionDamageAmountma maggiore diMinHealthPlayerHealth, sePlayerHealthè minore di o uguale aMinHealth
# Se la quantità di danni non elimina il giocatore, infliggi quella quantità if (PlayerHealth > PotionDamageAmount): return PotionDamageAmount else if (PlayerHealth > MinHealth): # Dà al giocatore un'altra possibilità se la sua salute è bassa return PlayerHealth - MinHealth else: # Elimina il giocatore return PlayerHealthL'effetto di questo codice è che darà al giocatore una seconda possibilità se beve una pozione che normalmente lo eliminerebbe.
-
Ora che hai creato una funzione che restituisce un risultato utile, devi archiviare tale risultato. Dichiara una costante
floatchiamataDamageToDoe inizializzala con il valore restituito diCalculateDamage(). Aggiungila alla tua funzioneHurtPlayer().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) -
Finalmente, è ora di utilizzare il risultato! Passa
DamageToDocome argomento aDamage(). AggiungiPrint()per vedere esattamente che cosa sta restituendoCalculateDamage().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("Danni da infliggere: {DamageToDo}") FortniteCharacter.Damage(DamageToDo)
Ora, invece della chiamata al metodo Damage() utilizzando un valore letterale, viene utilizzato il valore restituito da CalculateDamage(). Dovresti aver già scritto la chiamata a HurtPlayer() in un esercizio precedente, ma non dimenticare di controllare.
Script completo
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):
# Viene eseguito quando il dispositivo viene avviato in un gioco in esecuzione
OnBegin<override>()<suspends>:void=
HurtPlayer()
Print("Giocatore ferito")
CalculateDamage() : float =
MaxHealth : float = 100.0
MinHealth : float = 1.0
PotionDamageAmount: float = 80.0
var PlayerHealth : float = 100.0
# Se la quantità di danni non elimina il giocatore, infliggi quella quantità
if (PlayerHealth > PotionDamageAmount):
return PotionDamageAmount
else if (PlayerHealth > MinHealth):
# Dà al giocatore un'altra possibilità se la sua salute è bassa
return PlayerHealth - MinHealth
else:
# Elimina il giocatore
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("Danni da infliggere: {DamageToDo}")
FortniteCharacter.Damage(DamageToDo)
In autonomia, prova a creare una funzione simile a CalculateDamage() che restituisce un risultato che sarebbe utile per HealPlayer(). Se non riesci a proseguire, controlla la Lezione 4 È ora di fare pratica per alcune idee.