- 按键认证导师
- 513852
- 3624
- 47
- 4633 朵
- 28052 个
- 6157 个
- 190000
- 2010-10-09
|
1#
t
T
发表于 2022-02-15 21:51
|
|只看楼主
前言 随机数很简单, 使用紫猫插件后, 一行代码就搞定了- Import "zm.luae"
- zm.init
- //实现从1到10中随机获取一个数字
- Dim 随机数
- 随机数 = zm.RndNum(1, 10)
复制代码 但是如果我们要从多个函数中随机执行某一个函数呢?
思路 按键精灵仅提供了随机数字的功能, 没有其他任何随机命令, 但我们可以借助这个随机数字实现随机任意内容, 从常见的随机字母, 随机汉字等到本贴主题随机调用某个函数, 都可以办到. 例如随机字母功能, 利用ASCII码配合Chr()函数, 随机65到90范围内的数字, 就可以实现随机字母了(我不会告诉你紫猫插件已经提供该函数了, 哈哈).- //这是一个随机字母的例子
- Import "zm.luae"
- zm.init
- //实现从A到Z中随机获取一个字母
- Dim ASCII码, A的ASCII, Z的ASCII, 随机字母
- A的ASCII = Asc("A") //65
- Z的ASCII = Asc("Z") //90
- ASCII码 = zm.RndNum(A的ASCII, Z的ASCII) //随机一个字母的ASCII码
- 随机字母 = Chr(ASCII码) //将ASCII码转为字母
复制代码 但是如果我们要从多个函数中随机执行某一个函数呢? 思路也是类似的, 通过随机获取一个数字, 然后通过判断这个数字对应哪个函数, 就可以决定调用哪个子程序函数了, 这个讲起来可能有点复杂, 但是代码超级简单!
代码 我们先来实现随机调用一个子程序函数- //这是随机调用函数子程序的例子
- Import "zm.luae"
- zm.init
- //首先, 我们定义这4个函数, 当然, 你也可以放更多函数, 这里以这4个为例子
- Function f1()
- TracePrint "f1"
- End Function
- Function f2()
- TracePrint "f2"
- End Function
- Function f3()
- TracePrint "f3"
- End Function
- Function f4()
- TracePrint "f4"
- End Function
- Dim 随机数
- 随机数 = zm.RndNum(1, 4) //从1到4范围内随机获取一个数字
- Select Case 随机数 //根据得到的数字决定调用不同的函数子程序
- Case 1
- Call f1()
- Case 2
- Call f2()
- Case 3
- call f3()
- Case Else
- Call f4()
- End Select
复制代码 以上就是初级的随机调用函数子程序例子, 简单吧~
现在我们稍微复杂一点, 需求一样也是随机调用函数子程序, 但是呢, 我们要实现所有函数都调用一遍, 也就相当于随机打乱顺序调用函数子程序.
这个需求的核心其实还是一样的, 通过不同的随机数字决定调用不同的函数子程序, 只不过从调用一次变成了调用多次而已.
所以我们可以使用紫猫插件提供的不重复随机数功能, 将数字序列重新排列, 再循环遍历判断调用即可. 详见下面例子- //这是不重复随机调用所有函数子程序的例子
- Import "zm.luae"
- zm.init
- //首先, 我们定义这4个函数, 当然, 你也可以放更多函数, 这里以这4个为例子
- Function f1()
- TracePrint "f1"
- End Function
- Function f2()
- TracePrint "f2"
- End Function
- Function f3()
- TracePrint "f3"
- End Function
- Function f4()
- TracePrint "f4"
- End Function
- Dim 随机序列
- 随机序列 = zm.RndUniqueArr(1, 4) //从1到4范围内进行不重复随机(洗牌)
- For i = 0 To Ubound(随机序列)
- Select Case 随机序列(i) //根据得到的数字决定调用不同的函数子程序
- Case 1
- Call f1()
- Case 2
- Call f2()
- Case 3
- call f3()
- Case Else
- Call f4()
- End Select
- Next
复制代码
后记 其实按键精灵电脑版的随机数相关思路也是完全一样的, 欢迎大家自由发挥想象.
|