卓尔高考网

按键精灵怎么随机生成1到12数字并且不重复

篇首语:本文由小编为大家整理,主要介绍了按键精灵怎么随机生成1到12数字并且不重复相关的知识,希望对你有一定的参考价值。

按键精灵怎么随机生成1到12数字并且不重复?
一个游戏里有12个技能,怎么让每次随机使用技能不重复并且都能使用完?

Dim RndNum(11)
Dim n, i, m, Result

"初始化数组
For i = 0 To 11
RndNum(i) = 0
Next

"生成1-12随机数
n = 0
Randomize
RndNum(0) = Int(12 * Rnd + 1)
While n < 11
Result = 0  "随机数重复标志,0表示不重复,1表示重复
Randomize
m = Int(12 * Rnd + 1)
"For循环判断生成随机数是否和前面重复
For i = 0 To n
If m = RndNum(i) Then 
Result = 1
End If
Next

If Result = 0 Then 
n = n + 1
RndNum(n) = m
End If
Wend
"数组RndNum存放结果,下面这一句是查看结果的
MessageBox Join(RndNum, "|")

追问

谢谢大神,还有想问下,每次随机得到的数字怎么按顺序按下键盘按键

追答

你这里说的“键盘按键”不清楚,1-9可以按键,但是10,11,12怎么按?

追问

简单的说,就是“键盘随机按键+不重复”
我写到这里就不会写了
Sub 随机技能
dim key(12),i
key(0) = 96
key(1) = 97
key(2) = 98
key(3) = 99
key(4) = 100
key(5) = 101
key(6) = 102
key(7) = 103
key(8) = 104
key(9) = 105
key(10) = 107
key(11) = 109
Randomize
i=int((12)*rnd)
KeyPress key(i), 1
End Sub

参考技术A 其实我觉得直接获取系统的时间秒数,再称一个倍数再除相关倍数控制在你想要的范围就好了,比如1~12的话,总共就60秒,那直接获取系统秒数再乘2除10就完了,当然如果你是要短时间内生成特别多随机数的话这个方法就不怎么可取了

用按键精灵如何巧妙获取时间间隔?

还在苦苦守着电脑,心急如焚看着血条越来越少,等着技能CD冷却然后放大招嘛……

想不想浪漫一把,博得基 友欢心,从此只爱你一人? 

是不是想说,有DateDiff可以获取时间间隔嘛~~

小编今天给大家带来的,可不是这么简单的命令哦~

要么牛哄哄,要么软趴趴!


调取系统底层API

GetTickCount函数介绍:

GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。


函数声明:

Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

函数范例:计算当前时间和5秒后的时间差

// 获取当前时间

TheTime = GetTickCount()

// 延时 5 秒

Delay 5000

// 再次获取当前时间,计算时间差

TracePrint GetTickCount() - TheTime

运行结果:

2014-8-12 18:01 上传

下载附件 (119.7 KB) 



获取时间间隔:函数DateDiff与函数GetTickCount()对比

DateDiff只能获取到最小单位为:秒的数值

GetTickCount()可以获取到最小单位为:毫秒的数值

有时候,脚本的成败往往就在毫秒之间!

范例:等图找图大神代码

来看看大神提供的等图找图代码段吧~~

//声明函数GetTickCount

Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long


//找出多张图(hsz.bmp、jsj.bmp、ie.bmp)中的其中一张

TracePrint 找多图("hsz.bmp|jsj.bmp|ie.bmp") 

//延迟5000ms,等待图(hsz.bmp)

TracePrint 等图_毫秒("hsz.bmp",5000)

//延迟5000ms,等待多张图(hsz.bmp、jsj.bmp、ie.bmp)中的其中一张

TracePrint 等多图_毫秒("hsz.bmp|jsj.bmp|ie.bmp",5000) 


Function 找多图_数组(图像列表)

        找多图_数组 = 0

        For i = 0 To UBound(图像列表)

                FindPic 0, 0, Plugin.Sys.GetScRX - 1, Plugin.Sys.GetScRY - 1, "Attachment:\" & 图像列表(i), 1, intX, intY

                If IntX >= 0 Then 

                        找多图_数组 = i + 1

                        Exit For

                End If

        Next

End Function


Function 找多图(图像)

        找多图 = 找多图_数组(split(图像,"|"))

End Function


Function 等图_毫秒(图片, 超时时间)// 利用两次 GetTickCount() 得到时间间隔(单位:毫秒)

        等图_毫秒 = TRUE

        开始时间 = GetTickCount()

        Do

                If GetTickCount() - 开始时间 > 超时时间 Then 等图_毫秒 = FALSE:Exit Do

                FindPic 0, 0, Plugin.Sys.GetScRX - 1, Plugin.Sys.GetScRY - 1, "Attachment:\" & 图片, 1, intX, intY

        Loop Until IntX >= 0

End Function


Function 等多图_毫秒(图片, 超时时间)// 利用两次 GetTickCount() 得到时间间隔(单位:毫秒)

        开始时间 = GetTickCount()

        Do

                If GetTickCount() - 开始时间 > 超时时间 Then Exit Do

                等多图_毫秒 = 找多图(图片)

        Loop Until 等多图_毫秒

End Function

运行结果:


参考技术A 记录时间 = Plugin.Sys.GetTime()
For i = 1 to 100
Delay i
Next
运行耗时 = Plugin.Sys.GetTime() - 记录时间
TracePrint "本次代码运行耗时(以此精确记录运行时间间隔):" & 运行耗时
"制作:法科
"时间:2017-06-15
参考技术B 按键精灵如何设置时间间隔

按键精灵可以模拟鼠标和键盘的动作,通过按键精灵制作脚本,可以在一定程度上可以解放我们的双手,那么按键精灵怎样设置时间间隔呢?现在就为大家介绍一下,如何输入时间间隔

操作方法
01
打开或者新建一个脚本,点击左侧的【其他命令】



02
就可以看到设置时间的地方,就是【延时】



03
点击第一个下拉菜单,就可以选择时间的单位,有【秒】和【毫秒】两种



04
后面的时间,可以输入间隔的数值



05
然后点击后面的【插入】



06
就可以看到命令已经被插入了,注意:在脚本中,所有的时间单位都是【毫秒】,即使你插入的时候单位选择的是秒,按键精灵也会转为毫秒



07
还有一种更加简便的方法,点击【源文件】
可以看到刚才的语句被转化为了【Delay 100000】,并且可以用键盘输入语句了
所以,直接输入【Delay+时间】就可以设置时间间隔了,
注意时间单位是毫秒



望采纳!
参考技术C 设置开关热键

以上是关于按键精灵怎么随机生成1到12数字并且不重复的主要内容,如果未能解决你的问题,请参考以下文章

您可能还会对下面的文章感兴趣: