北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 7714|回复: 19

mush新手求助

[复制链接]
发表于 2010-5-19 11:24:27 | 显示全部楼层 |阅读模式
  1. local sqian="三千七百八十四万六千一百二十五"
  2. local milion=string.find(sqian,"万")
  3. local thousa=string.find(sqian,"千")
  4. local hundre=string.find(sqian,"百")
  5. local teens=string.find(sqian,"十")
  6. if milion~=nil then
  7.     if thousa~=nil then
  8.         if thousa
  9.             sqian=string.gsub(sqian,"千","*10000000+",1)
  10.             sqian=string.gsub(sqian,"千","*1000+")
  11.         end
  12.         if hundre~=nil then
  13.             if hundre
  14.                 sqian=string.gsub(sqian,"百","*1000000+",1)
  15.                 sqian=string.gsub(sqian,"百","*100+")
  16.             end
  17.                 if teens~=nil then
  18.                     if teens
  19.                         sqian=string.gsub(sqian,"十","*100000+",1)
  20.                         sqian=string.gsub(sqian,"十","*10+")
  21.                     end
  22.                 end
  23.         end
  24.     end
  25. end
  26. sqian=string.gsub(sqian,"万","*10000+")
  27. sqian=string.gsub(sqian,"千","*1000+")
  28. sqian=string.gsub(sqian,"百","*100+")
  29. sqian=string.gsub(sqian,"十","*10+")
  30. sqian=string.gsub(sqian,"九","9")
  31. sqian=string.gsub(sqian,"八","8")
  32. sqian=string.gsub(sqian,"七","7")
  33. sqian=string.gsub(sqian,"六","6")
  34. sqian=string.gsub(sqian,"五","5")
  35. sqian=string.gsub(sqian,"四","4")
  36. sqian=string.gsub(sqian,"三","3")
  37. sqian=string.gsub(sqian,"二","2")
  38. sqian=string.gsub(sqian,"一","1")
  39. sqian=string.gsub(sqian,"零","")
  40. print (sqian)
复制代码
如上,想把中文大写转成可运算的数字,但我写到这一步就写不下去了,还望高手老人指点,感谢

[ 本帖最后由 dgda 于 2010-5-19 11:50 AM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-19 11:36:09 | 显示全部楼层
写这么一大堆,好象不错嘛。
另外,磨这个不是我擅长的,我是文科生出身,对各种算法,那叫相当的弱。

不过,我记得好象论坛里有人给出过一个这个功能的半成品。
如果楼主非要自己写出来,呼唤ddid来给你帮助吧。。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-5-19 11:49:55 | 显示全部楼层
原帖由 lzkd 于 2010-5-19 11:36 AM 发表
写这么一大堆,好象不错嘛。
另外,磨这个不是我擅长的,我是文科生出身,对各种算法,那叫相当的弱。

不过,我记得好象论坛里有人给出过一个这个功能的半成品。
如果楼主非要自己写出来,呼唤ddid来给你帮助吧 ...


谢谢,呵呵,才看lua和mush两天,感觉是不错,除了没有zmud那么方便的automap,其它的,还挺好的

还请给新人指点啊,ddid在吗?chat* beep ddid

上面我写的,只能--->sqian="3*10000000+7*1000000+8*100000+4*10000+6*1000+1*100+2*10+5"

怎么才能把sqian转成数字啊?谢谢了

[ 本帖最后由 dgda 于 2010-5-19 11:51 AM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-19 11:57:36 | 显示全部楼层
你这个只怕要换思路了,你这样得到的是代表一个表达式的字符串,据我所知,lua是没有办法将2*1000+3*100+3这种字符串表达式直接运算成数值结果的。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-19 12:02:07 | 显示全部楼层
举个例吧,你得这样,先把汉字数字转换成3万6千之类的格式,然后
local num=0
        string.gsub(t1,"%d万",function(w) num=num+string.sub(w,1,1) end)
        num=num*10000
        string.gsub(t2,"%d千",function(w) num=num+string.sub(w,1,1)*1000 end)
当然上面这个是非常之简化了的。

see,see,see?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-19 12:09:39 | 显示全部楼层
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-19 12:11:26 | 显示全部楼层
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-19 12:11:56 | 显示全部楼层
原帖由 dgda 于 2010-5-19 11:49 AM 发表


谢谢,呵呵,才看lua和mush两天,感觉是不错,除了没有zmud那么方便的automap,其它的,还挺好的

还请给新人指点啊,ddid在吗?chat* beep ddid

上面我写的,只能--->sqian="3*10000000+7*1000000+8*10000 ...


你这个不是已经出来了吗?最后再差一点就是。
你把那个算式整成
sqian = tonumber(sqian1)*tonumber(sqian2) + tonumber(sqian3)*tonumber(sqian4) + ......

就可以了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-19 12:13:00 | 显示全部楼层
原帖由 maper 于 2010-5-19 12:11 PM 发表
http://pkuxkx.com/forum/viewthread.php?tid=1173&extra=page%3D&page=1


wa!!!!
把maper大神勾出来了。。嘿嘿
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-5-19 12:13:54 | 显示全部楼层
另外,lua很奇怪的。
两个象数值的变量相加,不能自动计算,非得转换成数值型的才可以。。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-28 08:22 PM , Processed in 0.010380 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表