HurtPlayer() işlevin çalışıyor, ancak Damage() yöntemine değişmez bir değer ilettiğin için bu değer yalnızca kodu manuel olarak değiştirdiğinde değişebilir. Bu alıştırmada, oluşturacağın başka bir işlevden gelecek dönüş değeri ile HurtPlayer() işlevini daha esnek hale getireceksin.
4. Ders: Alıştırma Zamanı’nda, oyuncunun canına bağlı olarak iksirlerin ne kadar hasar vermesi veya iyileştirme yapması gerektiğini hesaplamak için koşullu ifadeler kullanmıştın. Bu kodun bir kısmını CalculateDamage() adlı bir işlev olarak yeniden kullanacaksın. Bu işlev, float türünde bir değer döndürecek. O değeri bir sabitte saklayacak, ardından sabiti Damage() yöntemine ileteceksin.
-
CalculateDamage()adlı bir fonksiyon oluştur. Fonksiyon içinde,MinHealthvePotionDamageAmountolmak üzere ikifloattüründe sabit bildir.PlayerHealthadlıfloattüründe bir değişken bildir.CalculateDamage() : float = MinHealth : float = 1.0 PotionDamageAmount: float = 80.0 var PlayerHealth : float = 100.0 - Aşağıdaki üç değerden birini döndüren bir
if…else if…elseifadesi oluştur:PlayerHealth,PotionDamageAmounttan büyüksePotionDamageAmountPlayerHealth,PotionDamageAmounttan küçük, ancakMinHealthten büyüksePlayerHealth-MinHealthPlayerHealth,MinHealthten küçük veya ona eşitsePlayerHealth
# Hasar miktarı oyuncuyu yok etmeyecekse o miktarda hasar ver if (PlayerHealth > PotionDamageAmount): return PotionDamageAmount else if (PlayerHealth > MinHealth): # Canı düşükse oyuncuya bir şans daha ver return PlayerHealth - MinHealth else: # Oyuncuyu avla return PlayerHealthBu kodun etkisi, oyuncuya normalde kendisini yok edecek bir iksir içmesi halinde ikinci bir şans vermesidir.
-
Artık faydalı bir sonuç döndüren bir fonksiyon yaptığına göre, bu sonucu saklaman gerekir.
DamageToDoadında bir sabitfloatbildir ve bunuCalculateDamage()dönüş değeriyle başlat. BunuHurtPlayer()fonksiyonuna ekle.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) -
Nihayet sonucu kullanma zamanı geldi!
DamageToDoyu,Damage()a bağımsız değişken olarak ilet.CalculateDamage()ın tam olarak ne döndürdüğünü görebilmek için birPrint()ekle.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("Verilecek Hasar: {DamageToDo}") FortniteCharacter.Damage(DamageToDo)
Artık değişmez bir değer kullanarak Damage() yöntemine yaptığın çağrı yerine, CalculateDamage()dan döndürülen değeri kullanır. Bir önceki alıştırmada HurtPlayer() çağrısını zaten yazmış olmalısın, ancak kontrol etmeyi unutma.
Tam Kod
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):
# Cihaz, çalışmakta olan bir oyunda başlatıldığında çalışır
OnBegin<override>()<suspends>:void=
HurtPlayer()
Print("Player Hurt")
CalculateDamage() : float =
MaxHealth : float = 100.0
MinHealth : float = 1.0
PotionDamageAmount: float = 80.0
var PlayerHealth : float = 100.0
# Hasar miktarı oyuncuyu yok etmeyecekse o miktarda hasar ver
if (PlayerHealth > PotionDamageAmount):
return PotionDamageAmount
else if (PlayerHealth > MinHealth):
# Canı düşükse oyuncuya bir şans daha ver
return PlayerHealth - MinHealth
else:
# Oyuncuyu avla
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("Verilecek Hasar: {DamageToDo}")
FortniteCharacter.Damage(DamageToDo)
Kendi başına, HealPlayer() için faydalı olabilecek bir sonuç döndüren, CalculateDamage() benzeri bir işlev oluşturmaya çalış. Bunu yaparken takılırsan bazı fikirler için 4. Ders Alıştırma Zamanı’na göz at.