Pętla rundy
Lekcja 4 z 18 w kursie Gra Roblox: Przetrwanie w katastrofach w Coddy.
Gra w rundach nigdy się nie kończy: lobby, runda, lobby, runda. To while pętla, której warunek jest zawsze prawdziwy:
while true do
-- odliczanie w lobby
-- runda
endWszystko, co znajduje się wewnątrz, uruchamia się ponownie od początku za każdym razem, gdy kod dotrze do end. Ponieważ pętla while true nigdy się nie kończy, umieszcza się ją na samym końcu skryptu: kod znajdujący się po niej nigdy by się nie uruchomił. Każde przejście musi też gdzieś czekać, bo inaczej pętla nigdy nie oddałaby kolejki reszcie gry, a Roblox zatrzymałby skrypt.
Runda również odlicza czas, zaczynając od Settings.RoundLength, aby gracze widzieli, jak długo muszą przetrwać.
Wyzwanie
ŁatwyZamień odliczanie w pętlę gry:
- Umieść je w
while true do ... end. - Zastąp
Get ready!rundą: odliczaj odSettings.RoundLengthdo 1, co sekundę wyświetlającTime left: 15,Time left: 14i tak dalej.
Naciśnij Graj i obserwuj, jak mija runda, a odliczanie w lobby zaczyna się ponownie, a następnie kliknij Sprawdź.
Spróbuj swoich sił
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
print("Rounds last " .. Settings.RoundLength .. " seconds")
-- Każdy gracz otrzymuje Wins w tabeli wyników
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local wins = Instance.new("IntValue")
wins.Name = "Wins"
wins.Parent = leaderstats
end)
-- Tablica statusu w lobby
local gui = Instance.new("SurfaceGui")
gui.Parent = workspace.StatusBoard
local status = Instance.new("TextLabel")
status.Name = "Status"
status.Size = UDim2.fromScale(1, 1)
status.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
status.TextColor3 = Color3.fromRGB(255, 255, 255)
status.TextScaled = true
status.Text = "Welcome to Disaster Survival!"
status.Parent = gui
local function setStatus(text)
status.Text = text
end
-- Odliczanie
for seconds = Settings.Intermission, 1, -1 do
setStatus("Intermission: " .. seconds)
task.wait(1)
end
setStatus("Get ready!")
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.