-1

我刚开始学习电晕和lua,我的第一个项目是制作一个小骰子游戏,我刚刚开始!这是骰子对象...

    --declare table + metatable

    local dice = {}

    local dice_mt = {__index = dice}


    --CONSTRUCTOR 

    function dice.new(ypos, xpos) 

    local newdice = {xpos = xpos, ypos = ypos,dicetext = display.newText("X", 50*xpos , 50*ypos , nil, 50)} 

    --dicetext = display.newText(facevalue, 50*xpos , 50*ypos , nil, 50)

    return setmetatable(newdice, dice_mt) 
    end

    --rolldice function

    function dice:rolldice()

    self.dicetext.text = math.random(0,6) 

    end

    return dice

游戏是有一个可以滚动的 25 个骰子的网格(上面有 rolldice 功能)这是我的 main.lua

    display.setStatusBar(display.HiddenStatusBar)

    local diceclass = require ("dice")

    for i = 1, 5, 1 do

    local die = diceclass.new(i,i)

    i = i+1

    end

    die:rolldice()

我正在尝试以编程方式生成骰子网格(atm 我只是在对角线上生成 5 个骰子(只是文本)。到目前为止很好,但我的问题是运行 rolldice 函数。它在只有 1 个骰子但当有更多时不是。我猜问题是我有所有这些类的实例具有相同的名称。有没有办法在我的 for 循环中创建它们时以编程方式给它们不同的名称?或者有没有有更好的方法吗?谢谢!

4

1 回答 1

0

local变量如此命名是因为它们在定义它们的范围内是本地的。diefor循环中定义。因此,一旦您离开for循环,它就会停止存在。

如果要创建die对象数组,则需要创建一个可在循环访问的数组,然后将die对象添加到该数组中。

此外,i = i+1这会适得其反,因为 Lua 知道如何自己增加循环。此外,它可能会导致未定义的行为。

于 2012-07-13T21:03:13.700 回答