• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[紫猫] [手机版]随机数的妙用之随机调用子程序函数 [复制链接]

1#
前言
随机数很简单, 使用紫猫插件后, 一行代码就搞定了
  1. Import "zm.luae"
  2. zm.init

  3. //实现从1到10中随机获取一个数字
  4. Dim 随机数
  5. 随机数 = zm.RndNum(1, 10)
复制代码
但是如果我们要从多个函数中随机执行某一个函数呢?


思路
按键精灵仅提供了随机数字的功能, 没有其他任何随机命令, 但我们可以借助这个随机数字实现随机任意内容, 从常见的随机字母, 随机汉字等到本贴主题随机调用某个函数, 都可以办到.
例如随机字母功能, 利用ASCII码配合Chr()函数, 随机65到90范围内的数字, 就可以实现随机字母了(我不会告诉你紫猫插件已经提供该函数了, 哈哈).
  1. //这是一个随机字母的例子
  2. Import "zm.luae"
  3. zm.init

  4. //实现从A到Z中随机获取一个字母
  5. Dim ASCII码, A的ASCII, Z的ASCII, 随机字母
  6. A的ASCII = Asc("A") //65
  7. Z的ASCII = Asc("Z") //90
  8. ASCII码 = zm.RndNum(A的ASCII, Z的ASCII) //随机一个字母的ASCII码
  9. 随机字母 = Chr(ASCII码) //将ASCII码转为字母
复制代码
但是如果我们要从多个函数中随机执行某一个函数呢? 思路也是类似的, 通过随机获取一个数字, 然后通过判断这个数字对应哪个函数, 就可以决定调用哪个子程序函数了, 这个讲起来可能有点复杂, 但是代码超级简单!


代码
我们先来实现随机调用一个子程序函数
  1. //这是随机调用函数子程序的例子
  2. Import "zm.luae"
  3. zm.init

  4. //首先, 我们定义这4个函数, 当然, 你也可以放更多函数, 这里以这4个为例子
  5. Function f1()
  6. TracePrint "f1"
  7. End Function

  8. Function f2()
  9. TracePrint "f2"
  10. End Function

  11. Function f3()
  12. TracePrint "f3"
  13. End Function

  14. Function f4()
  15. TracePrint "f4"
  16. End Function

  17. Dim 随机数
  18. 随机数 = zm.RndNum(1, 4) //从1到4范围内随机获取一个数字
  19. Select Case 随机数 //根据得到的数字决定调用不同的函数子程序
  20. Case 1
  21. Call f1()
  22. Case 2
  23. Call f2()
  24. Case 3
  25. call f3()
  26. Case Else
  27. Call f4()
  28. End Select
复制代码
以上就是初级的随机调用函数子程序例子, 简单吧~

现在我们稍微复杂一点, 需求一样也是随机调用函数子程序, 但是呢, 我们要实现所有函数都调用一遍, 也就相当于随机打乱顺序调用函数子程序.

这个需求的核心其实还是一样的, 通过不同的随机数字决定调用不同的函数子程序, 只不过从调用一次变成了调用多次而已.

所以我们可以使用紫猫插件提供的不重复随机数功能, 将数字序列重新排列, 再循环遍历判断调用即可. 详见下面例子
  1. //这是不重复随机调用所有函数子程序的例子
  2. Import "zm.luae"
  3. zm.init

  4. //首先, 我们定义这4个函数, 当然, 你也可以放更多函数, 这里以这4个为例子
  5. Function f1()
  6. TracePrint "f1"
  7. End Function

  8. Function f2()
  9. TracePrint "f2"
  10. End Function

  11. Function f3()
  12. TracePrint "f3"
  13. End Function

  14. Function f4()
  15. TracePrint "f4"
  16. End Function

  17. Dim 随机序列
  18. 随机序列 = zm.RndUniqueArr(1, 4) //从1到4范围内进行不重复随机(洗牌)
  19. For i = 0 To Ubound(随机序列)
  20. Select Case 随机序列(i) //根据得到的数字决定调用不同的函数子程序
  21. Case 1
  22. Call f1()
  23. Case 2
  24. Call f2()
  25. Case 3
  26. call f3()
  27. Case Else
  28. Call f4()
  29. End Select
  30. Next
复制代码


后记
其实按键精灵电脑版的随机数相关思路也是完全一样的, 欢迎大家自由发挥想象.

最后编辑紫猫 最后编辑于 2022-02-15 21:52:30

【紫猫编程学园】火热招生中

教学涉及按键精灵电脑版、按键精灵手机版、易语言、Lua编程。

包含网页、端游、手游、办公、模拟器、插件等。

报名咨询QQ:345911220 或 97682686 或 97682687;

报名咨询微信:zimaoxy; 点我在线交谈


紫猫学园免费教程

加入交流QQ群: 7333555

发新话题 回复该主题