liccry 发表于 2010-4-12 23:00:32

原帖由 seagate 于 2010-4-12 10:54 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
把这个放在一个矩阵里面,就是二维list就可以,你从0,0开始找第,如果发现第,找坐标+-1的位置有没有数字,按照第%d项汉字数字+算法+汉字数字+点+汉字来匹配,只是从正常的+1,0匹配修改成+1,+1范围内匹配而已。应该 ...


我最开始的思路就是这个,但是实际使用中,发现无法用2维数组去存所有的汉字。
问题是因为汉字占据两个字符的位置,给数组赋值时会遇到错位。
比如:a代表第12行,第11个字符位置到第12个字符位置的汉字。
那么如果这个字符出现在第12行第12个字符位置,就无法取值赋值了。
为了绕过这个问题,我采用循环来代替的。

liccry 发表于 2010-4-12 23:02:15

原帖由 purbam 于 2010-4-12 10:57 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
有效字符一定是绿底白字?可以用颜色触发吗?


不是。
位置随机,颜色随机。

要不我也不会抛开熟悉的zmud,开始自学lua和mush,我上大学做作业都没这么认真过,呜呜。

seagate 发表于 2010-4-12 23:07:22

里面的每一个元素除了空格,0-9数字你都认为是汉字,取二位存在一个单元里面,通过组矩阵消化掉汉字和数字,字母的位长不一致,然后就简单了。

seagate 发表于 2010-4-12 23:09:41

反正你想着先把矩阵弄规整了就好办,看实际情况了。不是把汉字二位并一位就是字符数字一位当二位看,只要矩阵整齐了就没啥问题了

maper 发表于 2010-4-12 23:11:26

1、先把所有内容都存起来;
2、从第一行开始分析,碰到“第”字就记录所在的行和列以及颜色,其他字不用记录;
3、分析下一行,碰到一个字符就记录它的行和列以及颜色,分析它邻近(左、中、右,或者一定范围内)的上一行有没有字符,以及颜色是不是一样的,如果是一样的就存到一起,没有就抛弃掉;碰到“第”字同样记录颜色和位置;
4、重复第3步骤,
这样应该可以把需要的找出来了,且不管颜色是怎么样的,不管斜的方向是怎么样的。
可以多研究mushclient的颜色函数以及文本处理函数。

[ 本帖最后由 maper 于 2010-4-12 11:13 PM 编辑 ]

liccry 发表于 2010-4-12 23:11:49

原帖由 seagate 于 2010-4-12 11:09 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
反正你想着先把矩阵弄规整了就好办,看实际情况了。不是把汉字二位并一位就是字符数字一位当二位看,只要矩阵整齐了就没啥问题了


恩,我再琢磨琢磨。
谢谢。

liccry 发表于 2010-4-12 23:17:30

原帖由 maper 于 2010-4-12 11:11 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
1、先把所有内容都存起来;
2、从第一行开始分析,碰到“第”字就记录所在的行和列以及颜色,其他字不用记录;
3、分析下一行,碰到一个字符就记录它的行和列以及颜色,分析它邻近(左、中、右,或者一定范围内)的 ...


谢谢指点,我的思路就是这样,而且已经写好了。
问题就像我题目所说,由于过多的句型导致的循环过多,从而占用太多的cpu,然后mush本身会做假死状10多秒。
ttk_13

maper 发表于 2010-4-12 23:24:53

那就再优化优化

liccry 发表于 2010-4-13 00:26:43

恩,多谢指点。
页: 1 2 3 [4]
查看完整版本: [mushclient]请教如何在lua程序中降低cpu占用率。