|
3 谁帮我翻译下这个文件,主要是算法有点看不懂。。。会用,但是功能太少了,我想自己加点东西进去- path_dir_bianli_table={
- ["path_dl"]="wtlkwenssnjnwnsenhehlnnsjkewlhswlseetjhnehkesklgwwsgeensstgsnwenwswweeeewnssnwsweeudwswswenntwnsegseenssnwspllhnhntgslshiswwntnswuwtgeetgetgwwdegseeselelhwhw6n",
-
- }
- function is_number(c_name)
- local x,y=string.find(c_name,".*");
- for x=1,y do
- local b=string.byte(string.sub(c_name,x,x));--将截取到的字符串转换为整数
- if ((b<48) or (b>57)) then
- return false;
- end
- end
- return true;
- end
- temp_slow_path_table={};
- function fill_slow_path(path_name)
- local i,v = string.find(path_dir_bianli_table[path_name],".*");--匹配表中的字符串,i为字符串的起始位置,v为结束位置
- while i<=v do
- if is_number(string.sub(path_dir_bianli_table[path_name],i,i+1)) then
- --如果is_number()为true,但括号里的内容有点不理解,怎么成为is_number的参数
-
- for j=1,string.sub(path_dir_bianli_table[path_name],i,i+1) do--string.sub返回的是什么值?
- if nil~= path_dir_table[string.sub(path_dir_bianli_table[path_name], i+2, i+2)] then
- table.insert(temp_slow_path_table, path_dir_table[string.sub(path_dir_bianli_table[path_name], i+2, i+2)].cmd);
- --将当前获取的一个字符串所表示的cmd值存入temp_slow_path_table中
- else
- table.insert(temp_slow_path_table, string.sub(path_dir_bianli_table[path_name], i+2, i+2));
- --将当前获取的一个字符串存入temp_slow_path_table
- end
- end
- i=i+3;
- elseif is_number(string.sub(path_dir_bianli_table[path_name], i, i)) then
- for j=1,string.sub(path_dir_bianli_table[path_name],i,i) do
- if nil~= path_dir_table[string.sub(path_dir_bianli_table[path_name],i+1,i+1)] then
- table.insert(temp_slow_path_table, path_dir_table[string.sub(path_dir_bianli_table[path_name],i+1,i+1)].cmd);
- else
- table.insert(temp_slow_path_table, string.sub(path_dir_bianli_table[path_name],i+1,i+1));
- end
- end
- i=i+2;
- else
- if nil~= path_dir_table[string.sub(path_dir_bianli_table[path_name], i, i)] then
- table.insert(temp_slow_path_table, path_dir_table[string.sub(path_dir_bianli_table[path_name], i, i)].cmd);
- else
- table.insert(temp_slow_path_table, string.sub(path_dir_bianli_table[path_name], i, i));
- end
- i=i+1;
- end
- end
- end
- function slow_path(path_name, time_wait)
- if nil~= path_dir_bianli_table[path_name] then
- fill_slow_path(path_name);
- slow_path_thread=coroutine.create(function ()--coroutine.create创建一个协同程序
- for i,v in ipairs(temp_slow_path_table) do--遍历表
- world.DoAfterSpecial(time_wait, "slow_auto_next();",12);--n秒之后继续执行slow_path_thread
- coroutine.yield();--程序被挂起,暂停运行
- world.Send(v);
- end
- end);
- coroutine.resume(slow_path_thread);--从yeild处开始继续执行 else
- Note("你有这个搜索路径么"); end endfunction slow_auto_next() if slow_state==0 then coroutine.resume(slow_path_thread); endend
复制代码
[ 本帖最后由 aiccybb 于 2011-10-18 04:10 PM 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|