Artık bir işlevin yapısını bildiğine göre, kendi işlevini, hatta kendi iki işlevini oluşturma zamanı geldi!
Son alıştırmada, Fortnite’ta bir oyuncu karakterine hasar vermek için gereken kod satırlarını öğrenmiştin. Bu koda her ihtiyaç duyduğunda aynı satırları yazmak zorunda kalmaman daha iyi olurdu.
-
HurtPlayer()adlı bir fonksiyon belirt. Bunun dönüş türüvoidolacaktır, yani fonksiyon bir değer döndürmeyecektir. Fonksiyon bildirimini Verse dosyanın en sonuna koy. Fonksiyonun gövdesi, 5. Ders: Alıştırma Zamanı bölümünde yer alan kodun aynısıdır. İlgili kodu hatırlamaya ihtiyacın varsa bu derse göz at.HurtPlayer() : void = Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Damage(50.0)Bir işlev içinde başka işlev tanımlayamazsın, dolayısıyla tüm işlevlerinin
OnBegin()ile aynı düzeyde girintili olduğundan emin ol. -
Artık bir karaktere hasar vermek istediğinde kullanabileceğin bir işlevin var. Ancak bir işlevi bildirmek, o işlevin gövdesindeki kodu çalıştırmaz. Bunu yapabilmek için işlevi çağırman gerekir.
OnBegin()içindeki bu işlevleri çağırdığından emin ol.HurtPlayer() Print("Player Hurt") -
Şimdiye kadar, bir karakteri iyileştiren bir yöntemin de olduğunu tahmin etmişsindir. Söz konusu yöntemin adı
Heal()ve bunu,Damage()ı nasıl çağırıyorsan onunla tam olarak aynı şekilde çağırabilirsin. Bu kodu kullanarak Verse dosyanın sonundaHealPlayer()işlevini oluştur.HealPlayer() : void = Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Heal(20.0) -
Şimdi
OnBegin()gövdesindeki fonksiyon çağrılarınaHealPlayer()çağrısını ekle.HurtPlayer() Print("Player Hurt") Sleep(5.0) HealPlayer() Print("Player Healed")
Sleep() işlevine yeni bir çağrı olduğunu fark edebilirsin. Temel olarak, Sleep(), sonradan gelen kodu çalıştırmaya devam etmeden önce programın beklemesini sağlar. Bekleme süresi, Sleep()e ilettiğin ve saniye cinsinden temsil edilen parametre tarafından belirlenir. (Sonraki bir derste parametrelerle ilgili daha fazla bilgi edineceksin.) Burada Sleep() olmasaydı HealPlayer(), HurtPlayer()dan hemen sonra çalışacak ve bu iki işlev çağrısının etkisini fark etmeyecektin.
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")
Sleep(5.0)
HealPlayer()
Print("Player Healed")
HurtPlayer() : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
FortniteCharacter.Damage(50.0)
HealPlayer() : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
FortniteCharacter.Heal(20.0)
Sonraki Ders
%learn-code-basics-7-specifying-the-result-of-a-function-in-verse:topic%