|
发表于 2015-1-26 09:43:40
|
显示全部楼层
回复 7# windyhawk
基本上所有的trigger,我都做了底层的封装,将他们作为协程的一部分,优点是模块化程度高。
如果在Mush中设置,则会变得凌乱且难以维护。
比如睡觉函数,我是这么写的:
def Sleep(loop):
subloop = Segment(loop)
def Loop(segment)
while True:
yield('singleline', u'^你一觉醒来...|^三分钟...|^你正忙...', 'sleep')
if u'醒' in segment.line:
break;
else:
yield ('timer', 5)
subloop.Run(Loop)
这样就单独实现了一个睡觉的函数,不需要建立触发(当然底层还是使用触发方式),而且所有的
代码都在一个函数中,不需要额外设置trigger之类的,非常方便维护,比如发现了sleep某些情况下
无法正常运行的情况,那么只要在这个函数中修复了这个bug,所有调用Sleep的模块,都会解决这个
Bug。
使用也非常方便,比如:
def Study():
if cp > 200:
LearnFromZhuxi()
else:
Sleep()
这种写机器人的思路,我也在另外《远离触发》那个帖子里面提到了。
之所以在那边没上传代码,主要是觉得,既然使用了python,那么对编码肯定有自己独到的见解,
也不会轻易使用别人的代码,而且我的python也是刚学,代码上很多处理并不优雅,所以就只是
写一下思路。 |
|