vb课设数字拼图初始化 高手进

PrivateSubCommand2_Click()Dimnum(7)AsIntegerDimaAsIntegerDimbAsIntegerDimcAsIntegerDo... Private Sub Command2_Click()
Dim num(7) As Integer
Dim a As Integer
Dim b As Integer
Dim c As Integer
Do While b < 8
p: a = Rnd * 8
If a = 0 Then
GoTo p
End If
If b = 0 Then
num(b) = a
b = b + 1
GoTo p
End If
For c = 0 To b - 1
If num(c) = a Then
GoTo p
End If
Next c
num(b) = a
b = b + 1
Loop
Randomize
这段代码是如何实现使拼图初始化的,里面的abc代表什么?
展开
 我来答
乐游原上的歌者
2011-09-12 · TA获得超过383个赞
知道小有建树答主
回答量:278
采纳率:71%
帮助的人:231万
展开全部
先解释一下P:
早期BASIC中每一句代码前都有一个数字来作标识表示程序执行的顺序,后来在VB中不用了,但还是保留了这一习惯,这个P就是用来表示a = Rnd * 8这句代码的位置的标识
GOTO语句,又称无条例转移指令,表示程序执行到这里时立即转移, 而GOTO P 就是转移到标记为P的指令处,在这里指执行 a = Rnd * 8 这一句.
Randomize 初始化随机数生成器,注意到下面一句RND没有?RND:产生一个随机数,随机数的产生一般用系统计时器返回的值作为新的种子值,如果没有对随机数生成器进行初始化,当下一次运行RND 时还是使用第一个种子数,这样产生的随机数就会和上一次一样,等于没有产生.所以要初始化,Randomize就是实现这个功能的.
明白了吧?
解释整修程序
Private Sub Command2_Click()
Dim num(7) As Integer'定义一个数组
Dim a As Integer'不用说吧
Dim b As Integer
Dim c As Integer
Randomize ' 初始化随机数生成器,应该放在DO语句的下面吧?
Do While b 8'如果b >= 8'就转移到标识为LOOP下面的那一语句
p: a = Rnd * 8 'p:这一句的标识是P
If a =0 Then
GoTo p '如果a =0就转移到标识为P的语句那里去
End If
If b = 0 Then
num(b) = a
b = b + 1
GoTo p '如果b =0就转移到标识为P的语句那里去
End If
For c = 0 To b - 1
If num(c) = a Then
GoTo p '如果c =0就转移到标识为P的语句那里去
End If
Next c
num(b) = a
b = b + 1
Loop'转移到Do While b < 8处
Com(0).Caption = ""'后面的就不写了吧
Com(0).Enabled = True
Com(0).Visible = False
For a = 0 To 7
Com(a + 1).Enabled = True
Com(a + 1).Visible = True
Com(a + 1).Caption = num(a)
Next a
Timer1.Enabled = True
Label1.Caption = 0
Label3.Caption = 0
Command1.Visible = True
End Sub
不知道你要干什么,不明白具体需求
syht2000
高粉答主

2011-09-11 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
这段代码目的其实很简单,就是在num数组中生成一个不重复的1-8的数字列表,a表示每次生成的不为0的一个随机数,b是用来控制当前生成了几个数字的,c是用来计算随机数a是否已经在num数组中出现过的。但是由大于大量的goto的应用,使得这段代码可读性很差,改动如下

Dim num(7) As Integer
Dim b As Integer, t As Integer, i As Integer
Dim flag As Boolean

Randomize

b = 0
Do While b < 8 'b用来控制当前已经填充的数字个数
t = Rnd * 8
While t = 0 't为每次生成的不为0的随机数
t = Rnd * 8
Wend

flag = False 'flag表示上面的t是否已经在num中出现过,false则未出现,true为已经出现
For i = 0 To b
If num(i) = t Then
flag = True
Exit For '如果已经出现,则跳出此次循环
End If
Next i

If Not flag Then '如果尚未出现过,则将t放入num,同时b+1
num(b) = t
b = b + 1
End If
Loop
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1515111280
2011-09-11 · 超过14用户采纳过TA的回答
知道答主
回答量:170
采纳率:0%
帮助的人:51.7万
展开全部
a b c代表什么都不知道 你就上百度问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式