C# 中有 goto 循环的等价物在 Lua 中是否存在?(必须与 Love2D 兼容)

我正在为一项学校项目编写游戏,一种类似太空侵略者的游戏。我现在正在尝试制作一个屏幕,在屏幕上显示“按R重新开始”,这样当玩家按下R时,游戏就会回到开头。就像C# 的例子一样:Start:(所有代码)goto Start。所以我的问题是是否有等价物?我在互联网上找不到相关信息。

我已经尝试过 return 循环,但它甚至在游戏开始前就会崩溃。我看到Lua实际上在5.2版本中具有goto循环。但Love2D仅支持Lua 5.1,现在我尝试了repeat ... until(条件),但它仍然不起作用。

代码开始:

repeat

score = 0
enemykills = 0
local start = love.timer.step( )

代码结尾:

    love.graphics.setColor(255, 255, 255)
    for _,b in pairs(player.bullets) do
      love.graphics.rectangle("fill", b.x, b.y, 2, 2)
    end
end
until not love.keyboard.isDown("r")

我希望在按下R时游戏重新启动,但它要么崩溃,要么什么也不做。

点赞
用户734069
用户734069

Love2D会不断调用你的love.updatelove.draw函数。你不需要这样一个循环。你需要做的是记住你的游戏处于“等待用户按下‘r’重新开始”的状态。所以你的代码可能会像这样:

local current_state = "normal"

function love.update(dt)
    if(current_state == "wait") then
        if(love.keyboard.isDown("r")) then
            current_state == "normal"
        end
    else
        --[[正常处理]]
    end
end
2019-02-15 16:15:00