【问题标题】:Is Corona SDK fast enough for a Dwarf Fortress like game?Corona SDK 对矮人要塞之类的游戏是否足够快?
【发布时间】:2019-08-12 05:44:45
【问题描述】:

我想做一个矮人要塞之类的游戏。 Corona SDK 是否足够快?我将如何存储每个单独块的数据。既然我不能在 Lua 中进行枚举,我将如何定义块的类型?

【问题讨论】:

  • 如果您不知道如何在 Lua 中存储信息,我建议您在尝试编写整个游戏之前学习 Lua 的基础知识。 Corona 是否足够快取决于您运行它的机器。只需在网上搜索使用 Corona 制作的游戏并进行比较。

标签: enums lua coronasdk


【解决方案1】:

为什么不能在 Lua 中创建枚举?只需使用一个简单的表格。

brickType = { A = 1,
              B = 2,
              C = 3,
}

myFristBrick = { weight = 500,
                 volume = 50,
                 type = brickType.C
}

您可以使用 Lua 表对非常复杂的数据结构进行建模。因此,存储砖数据是您最不应该担心的问题。

【讨论】:

    【解决方案2】:

    我将它与元表一起使用,以模拟 enumTypes

    local enumType_MT = {
        __newindex = function (t, k, v)
            if t [k] then
                print ('redeclaring enum type ' .. k .. ' not permited')
            else
                rawset (t, k, {})
                local c
                for c = 1, #v do
                  rawset (t [k], v[c], c)
                  rawset (t[k], c, v[c])
                end
             end
        end
    }
    
    local myEnumTypes = {}
    setmetatable( myEnumTypes, enumType_MT )
    
    myEnumTypes ['foo']  = {'brick_A', 'brick_B', 'brick_C'}
    myEnumTypes ['doo']  = {'brick_E', 'brick_F', 'brick_G'}
    
    myVar = myEnumTypes['foo'].brick_A
    print (myVar) -- outputs 1
    myVar = myEnumTypes['foo']['brick_C']
    print (myVar) -- outputs 3
    myVar = myEnumTypes['foo'][2]
    print (myVar) -- outputs 'brick_B'
    
    myVar = myEnumTypes['doo'].brick_A
    print (myVar) -- outputs nil as brick_A not in doo
    myVar = myEnumTypes['doo']['brick_C']
    print (myVar) -- outputs nil as brick_C not in doo
    myVar = myEnumTypes['doo'][2]
    print (myVar) -- outputs 'brick_F'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-12
      • 2016-07-31
      • 2015-01-07
      • 2014-05-09
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多