首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想知道在游戏中重复while循环是如何工作的

我想知道在游戏中重复while循环是如何工作的
EN

Stack Overflow用户
提问于 2020-07-28 11:38:00
回答 2查看 65关注 0票数 0

这段代码在游戏开始时在地图上的某个区域内生成100只鸡,但其中一只玩家已经收集了所有的100只鸡,没有剩余的鸡可以收集,所以我想知道如何重新生成另外100只鸡,一旦剩余的鸡数量降到10只,那么玩家将有一个连续数量的鸡收集,希望这是有意义的,提前谢谢。jp

代码语言:javascript
复制
local newChicken = game.ServerStorage:FindFirstChild("ChickenOnePart")

local TopLeftCorner = Vector3.new(-187.64, 20.679, 106.2)
local BottomRightCorner = Vector3.new(201.12, 20.679, -241.45)
local numberOfChickens = 100
local counter = 0

local singleTonRandom = Random.new(tick())

local function GetRandom(Min,Max)
return singleTonRandom:NextNumber(Min,Max)
end


while counter < numberOfChickens  do
local chicken = newChicken:Clone()
chicken.Anchored = true
chicken.Parent = game.Workspace
chicken.Name = "Chicken"
chicken.Position = Vector3.new(
    GetRandom(TopLeftCorner.X,BottomRightCorner.X),
    4,
    GetRandom(TopLeftCorner.Z,BottomRightCorner.Z)
)
counter = counter + 1

end 

这段代码在玩家每次触摸一只鸡时将计数器加1。我能从这里得到当前的鸡肉数量吗?

代码语言:javascript
复制
if hitPart.Name == "Chicken" then
    event:FireServer(hitPart)
    local currentcount = playerGUI.ChickenGui.ChickenCounter.Text
    playerGUI.ChickenGui.ChickenCounter.Text = currentcount + 1
    hitPart:Destroy()
    debounce = true
    wait(0.1)
    debounce  = false
end
end)

这是用于更新前导的代码。

代码语言:javascript
复制
local event = Instance.new("RemoteEvent")
event.Name = "CurrencyAdd"
event.Parent = game.ReplicatedStorage

event.OnServerEvent:Connect(function(plr,part)
local currency = plr.leaderstats.Chickens
currency.Value = currency.Value + 1
end)


game.Players.PlayerAdded:Connect(function(plr)
local ls = Instance.new("Folder")
ls.Name = "leaderstats"
local m = Instance.new("IntValue",ls)
m.Name = "Chickens"
ls.Parent = plr

local cash = Instance.new("IntValue",ls)
cash.Name = "Cash"
end)

@Piglet,谢谢你,我有点理解,这是你的意思吗?

代码语言:javascript
复制
local newChicken = game.ServerStorage:FindFirstChild("ChickenOnePart")

local TopLeftCorner = Vector3.new(-187.64, 20.679, 106.2)
local BottomRightCorner = Vector3.new(201.12, 20.679, -241.45)
local numberOfChickens = 100
local counter = 0

local singleTonRandom = Random.new(tick())

local function GetRandom(Min,Max)
return singleTonRandom:NextNumber(Min,Max)
end

for counter = 1, numberOfChickens do
local chicken = newChicken:Clone()
chicken.Anchored = true
chicken.Parent = game.Workspace
chicken.Name = "Chicken"
chicken.Position = Vector3.new(
    GetRandom(TopLeftCorner.X,BottomRightCorner.X),
    4,
    GetRandom(TopLeftCorner.Z,BottomRightCorner.Z)
)
counter = counter + 1
end

function AddChicken(num)
for count = 10, num do
local chicken = newChicken:Clone()
chicken.Anchored = true
chicken.Parent = game.Workspace
chicken.Name = "Chicken"
chicken.Position = Vector3.new(
  GetRandom(TopLeftCorner.X,BottomRightCorner.X),
  4,
  GetRandom(TopLeftCorner.Z,BottomRightCorner.Z)
)
end        
end
AddChicken(90)

很抱歉,我只是在学习这一切

EN

回答 2

Stack Overflow用户

发布于 2020-07-28 12:58:37

基本上,只需将while循环放在自己的函数中,然后在鸡的数量低于某个阈值时调用该函数,就像调用GetRandom将鸡放在适当的位置一样:

代码语言:javascript
复制
function GenerateChickens()
    while counter < numberOfChickens  do
        local chicken = newChicken:Clone()
        chicken.Anchored = true
        chicken.Parent = game.Workspace
        chicken.Name = "Chicken"
        chicken.Position = Vector3.new(
            GetRandom(TopLeftCorner.X,BottomRightCorner.X),
            4,
            GetRandom(TopLeftCorner.Z,BottomRightCorner.Z)
        )
        counter = counter + 1
    end
end

我不知道您如何获得当前的鸡肉数量,但这应该是一个很好的开始。

票数 0
EN

Stack Overflow用户

发布于 2020-07-28 18:48:19

由于这样的循环非常常见,因此有一种比以下形式更短的形式:

代码语言:javascript
复制
local counter = 0
while counter < numberOfChickens do
  -- ...
  counter = counter + 1
end

这可以使用数字for循环来编写

代码语言:javascript
复制
for counter = 1, numberOfChickens do
  -- ...
end

当只剩下10只鸡的时候,再加100只鸡,就像你建议的那样,你会得到110只鸡。所以如果你想在地图上有100只鸡,你应该加90。

要做到这一点,您应该检查鸡肉计数,每当鸡被移走。一旦你的条件为真,你就应该调用一个函数来添加一定数量的鸡。

代码语言:javascript
复制
function AddChicken(num)
  for count = 1, num do
    local chicken = newChicken:Clone()
    chicken.Anchored = true
    chicken.Parent = game.Workspace
    chicken.Name = "Chicken"
    chicken.Position = Vector3.new(
      GetRandom(TopLeftCorner.X,BottomRightCorner.X),
      4,
      GetRandom(TopLeftCorner.Z,BottomRightCorner.Z)
    )
  end        
end

只需确保函数在newChicken的作用域内

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63126665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档