Teraz, gdy znasz już strukturę funkcji, pora stworzyć własną – a właściwie dwie!
W ostatnim ćwiczeniu opisaliśmy wiersze kodu potrzebne do zadania obrażeń postaci gracza w Fortnite. Byłoby lepiej, gdyby nie trzeba było wpisywać tych samych wierszy za każdym razem, gdy potrzebujesz tego kodu.
-
Zadeklaruj funkcję o nazwie
HurtPlayer(). Typ zwracanej wartości tovoid, co oznacza, że nie zwróci ona żadnej wartości. Umieść deklarację funkcji na samym końcu pliku Verse. Ciało funkcji to ten sam kod z lekcji 5: Praktyka czyni mistrza, więc jeśli potrzebujesz przypomnienia, zajrzyj tam.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)Nie można zdefiniować funkcji wewnątrz innej funkcji, więc sprawdź, czy wszystkie twoje funkcje są wcięte do tego samego poziomu co
OnBegin(). -
Teraz masz funkcję, której możesz użyć za każdym razem, gdy chcesz zadać obrażenia postaci. Jednak zadeklarowanie funkcji nie powoduje uruchomienia kodu w ciele funkcji. W tym celu musisz wywołać funkcję. Pamiętaj, aby wywołać te funkcje w obrębie
OnBegin().HurtPlayer() Print("Gracz doznał obrażeń") -
Być może domyślasz się już, że istnieje również metoda, która leczy postać. Nazywa się ona
Heal()i możesz ją wywołać dokładnie tak samo, jakDamage(). Utwórz funkcjęHealPlayer()na końcu pliku Verse, używając tego kodu.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) -
Teraz dodaj wywołanie
HealPlayer()do wywołań funkcji w ciele funkcjiOnBegin().HurtPlayer() Print("Gracz doznał obrażeń") Sleep(5.0) HealPlayer() Print("Gracz został uleczony")
Możesz zauważyć, że pojawiło się nowe wywołanie funkcji Sleep(). Ogólnie rzecz biorąc, funkcja Sleep() sprawia, że program czeka przed kontynuowaniem wykonywania kodu, który występuje dalej. Czas oczekiwania jest określany przez parametr przekazywany do funkcji Sleep(), który wyrażasz w sekundach. (Więcej o parametrach dowiesz się w późniejszej lekcji). Bez użycia funkcji Sleep() w tym miejscu, funkcja HealPlayer() zostałaby uruchomiona natychmiast po HurtPlayer() i efekt obu wywołań funkcji nie byłby widoczny.
Kompletny skrypt
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):
# Działa po uruchomieniu urządzenia w aktywnej grze
OnBegin<override>()<suspends>:void=
HurtPlayer()
Print("Gracz doznał obrażeń")
Sleep(5.0)
HealPlayer()
Print("Gracz został uleczony")
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)
Następna lekcja
%learn-code-basics-7-specifying-the-result-of-a-function-in-verse:topic%