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

问题描述 投票:0回答:1

我正在为一个学校项目编写游戏,这是一种Space Invader类型的游戏。我正在尝试制作一个屏幕,上面写着“按R重新启动”,这样当玩家按下R时游戏就会重新开始。就像在C#例程中一样:开始:(所有代码)转到开始。所以我的问题是相同的吗?我在互联网上找不到相关的东西。

我已经尝试过返回循环但它在游戏开始之前就崩溃了。我看到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时我希望游戏重启,但它要么崩溃要么什么都不做。

lua love2d
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.