北大侠客行MUD论坛

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

为什么要使用wait

[复制链接]
发表于 2011-1-17 10:10:54 | 显示全部楼层 |阅读模式

如上图,假如事件A.B.C.D都可能引起事件1.2.3.4,事件1.2.3.4又都可能引起事件I.II.III.IV.V.VI
那么在mushclient使用中,如果你用纯粹的触发或DoAfter来处理这类事件,逻辑关系会变得非常的复杂。
例如,当事件V发生时,你可能需要知道是哪个事件触发了事件V,然后根据不同的触发源进行不一样的处理。
大量的使用标志变量也许能解决这个问题,但是大量地使用标志变量会使程序变得非常的难懂。

而使用wait,这些事件的处理是封闭的、顺序执行的,其优点是逻辑清晰,可读性好,而且一个模块的内部修改
不会影响其它模块,可维护性也就好得多。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-1-19 11:13:48 | 显示全部楼层
我说的这个wait,就是mushclient自带的wait.lua,使用它可以使复杂的流程局部化、模块化。
例如:有一个流程,有连续三个action,第一个是打坐,第二个是拿剑,第三个是练sword。如果你不使用wait.lua,很难将这三个动作局部化到一个模块里,而使用wait就可以做到,示意如下:

      do 打坐action
      wait打坐完成 (这里你如果不用wait,动作完成后的处理代码就不能直接写在下面了,而要写到触发器里,或者写到其它模块,这样可读性可维护性就差了)
      do 拿剑action
      wait拿剑完成,并判断是否拿到了剑
      如果拿到了剑
            do 练剑法action
      否则
            返回
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-1-19 11:18:53 | 显示全部楼层
学习下。。。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 03:29 PM , Processed in 0.010087 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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