lua中C#中的“ goto”循环是否等效? (必须与Love2D兼容)

时间:2019-02-15 13:46:14

标签: lua love2d

我目前正在为学校项目编写游戏,这是一种《太空侵略者》类型的游戏。我目前正在尝试制作一个屏幕,上面写着“按R重新启动”,以便当玩家按R时游戏可以重新开始。像在C#示例中一样:开始:(所有代码)转到开始。所以我的问题是否与此等效?我在互联网上找不到有关此事的信息。

我已经尝试过return循环,但是它甚至在开始之前就使游戏崩溃。我看到Lua在5.2版本中实际上有一个goto循环。但是Love2D仅支持Lua 5.1,所以现在我尝试重复...直到(条件),但仍然不起作用

代码的开头:

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键时,我希望游戏重新启动,但是它崩溃或什么也不做。

1 个答案:

答案 0 :(得分:3)

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
        --[[Do normal processing]]
    end
end