2

我正在 Gideros(使用 Lua)中创建一个回合制游戏,我遇到了记录每个演员事件的问题。我希望玩家能够为他们控制的每个演员设置路径、方向和开火事件。我有一个使用多维数组的想法

TaskList = { 1 = { "MoveTo", {3,5} }, 
             2 = { "AimTo", {5,2} }, 
             3 = { "Fire" }, 
             4 = { "MoveTo", {23,21} }

然而,这似乎是一种非常烦人且效率低下的方法。有没有明显更好的方法?谢谢。

4

2 回答 2

4

我建议如下:

  • Remove 1 =, 2 =, 等。这是“数组”初始化语法所暗示的。
  • 使用空格来提高可读性。
  • 考虑通过使用名称而不是索引在操作表中更详细。(这也将使结构更具前瞻性,因为您可以添加/删除对某些属性的支持,而无需更改每个属性所在的索引。)

例如:

TaskList = {
    { action="MoveTo", location={3,5} },
    { action="AimTo",  location={5,2} },
    { action="Fire" },
    { action="MoveTo", location={23,21} }
}
于 2013-08-12T17:09:35.133 回答
1

通过函数调用构造数组怎么样?

function MoveTo( a, b ) return { action="MoveTo", location={ a, b } } end
function AimTo( a, b ) return { action="AimTo", location={ a, b } } end
function Fire() return { action="Fire" } end

TaskList = { MoveTo( 3, 5 ),
             AimTo( 5, 2 ), 
             Fire(),
             MoveTo( 23, 21 ) }
于 2013-08-13T13:26:59.543 回答