我怎么能做得更好?

时间:2013-08-02 13:44:34

标签: lua corona

我有这个代码设置,以便根据船的大小改变船的力量。

function activateFly(ship, event)
    if(size == 0) then
        ship:applyForce(0, -2.5, ship.x, ship.y)
        print("FLY SIZE 0")     
    elseif(size == 1) then
        ship:applyForce(0, -2.3,ship.x, ship.y)
        print("FLY SIZE 1")
    elseif(size == 2) then
        ship:applyForce(0, -2.0, ship.x, ship.y)
        print("FLY SIZE 2")
    elseif(size == 3) then
        ship:applyForce(0, -0.8, ship.x, ship.y)
        print("FLY SIZE 3")
    end
end

这意味着我需要为所有不同的大小编写无穷无尽的if-else语句。我问的是,如果有一个代码,我可以采取存储的大小变量,乘以一些数字,并正确设置力?这样我就不需要写下所有这些陈述。

1 个答案:

答案 0 :(得分:4)

你的意思是这样吗?

local forceMap = {
    [0] = -2.5,
    [1] = -2.3,
    [2] = -2.0,
    [3] = -0.8,
}

function activateFly(ship, event)
    ship:applyForce(0, forceMap[size], ship.x, ship.y)
    print("FLY SIZE "..size)
end

如果你碰巧有办法从大小计算力,你可以避免使用映射表,而是使用数学。