trace 发表于 2009-8-25 16:21:05

再次请教mush 的遍历

这几天学习mush和lua。感觉还是很有兴趣。我现在的工作主要是作数值计算,搞fortran的。和lua差距相当大。
所以又要麻烦各位高手了。

这个是mape大侠r的以前的回帖:
天龙寺的遍历
bianli["tls"]="enter shudong;say 天堂有路你不走呀\nd;8;se;s;sw;sw;s;w;ne;ne;ne;n;n;n;n;n;n;s;s;s;s;s;sw;nw;n;s;nu;nu;nu;sd;sd;sd;se;wu;nu;n;n;e;w;w;e;n;w;e;s;s;s;sd;ed;ne;ne;ne;ne;w;w;"
这样可以根据;分解成数组,然后就一个一个的发送,感觉还是很方便。

我的问题是怎么把这个遍历分解成数组,然后发送啊?lua 的数组是不是就是table 啊?感觉lua 的数据类型table很强大。也比较难掌握。

duno 发表于 2009-8-25 16:45:25



    local path = "a;b;c;d;e;fff"
    local str = ""
    for _, v in ipairs (utils.split (path, ";")) do
      if string.len (v) == 1 then
            str = str .. v .. " "
      else
            str = str .. "(" .. v .. ") "
      end
    end
    Execute ("#" .. str)

7n5s型的格式没有处理

littlexi 发表于 2009-8-25 16:48:18

hzl hzl

ddid 发表于 2009-8-25 17:09:17

我怎么觉得fortran和lua很象呢?fortran俺在学校里也学过,不过忘得就记住一点:Fortran是Basic之母。

Lua中的table是LUA的两大显著特点之一,掌握table是学习lua的必经之路。

MUSH对LUA的table做了一个小扩展,utils.split 函数,在单纯的lua环境中没有utils.split,split函数可以自己写以实现相应的功能(我刚开始用LUA的时候就不知道有utils.split,就自己写了split的function并结合table.getn和table.insert实现utils.split的功能,我挖金子的代码中的select语句就是这么实现的)

下面放上例子:-- -- -- -- -- -- -- --

function test_table()

require "tprint"

bianli_tls="enter shudong;say 天堂有路你不走呀\nd;8;se;s;sw;sw;s;w;ne;ne;ne;n;n;n;n;n;n;s;s;s;s;s;sw;nw;n;s;nu;nu;nu;sd;sd;sd;se;wu;nu;n;n;e;w;w;e;n;w;e;s;s;s;sd;ed;ne;ne;ne;ne;w;w;"

local t = utils.split(bianli_tls, ";")

print(bianli_tls)
tprint(t)

end -- test_table()

-- -- -- -- -- -- -- --正回复着呢,就发现duno又比我快一步 hzr

[ 本帖最后由 ddid 于 2009-8-25 05:10 PM 编辑 ]

ddid 发表于 2009-8-25 17:34:51

关于发送,也可以用以下代码实现:


table.foreach(t, function(i, v)
local dir = "(" ..v ..")"
world.Execute("#" ..dir)
end)

trace 发表于 2009-8-25 17:37:54

多谢啊。感觉table 不太象fortran 的数组,
类似自定义类型,相当活。我还用的不好。
以后还要多多请教

ddid 发表于 2009-8-25 17:42:16

原帖由 trace 于 2009-8-25 17:37 发表 http://pkuxkx.net/forum/images/common/back.gif
多谢啊。感觉table 不太象fortran 的数组,
类似自定义类型,相当活。我还用的不好。
以后还要多多请教

addoil

hz6

ddid 发表于 2009-8-25 17:47:04

原帖由 duno 于 2009-8-25 16:45 发表 http://pkuxkx.net/forum/images/common/back.gif


7n5s型的格式没有处理

请教duno大牛,怎么实现7n5s的格式哩?

duno 发表于 2009-8-25 18:26:23

先判断数字是指令的一部分还是下一指令的重复次数
指令的一部分: 加括号
下一指令的重复次数: do n x 或者 x x x x x ...(n次)
俺不属牛

trace 发表于 2009-8-25 18:39:48

大侠。再次请教,如果遍历遇到npc想停止怎么办?
如果是坐船怎么处理啊?

[ 本帖最后由 trace 于 2009-8-25 06:44 PM 编辑 ]
页: [1] 2
查看完整版本: 再次请教mush 的遍历