vb中出现死机情况,小白求教
关键步骤简化一下就是这样,我觉得就是k的问题,k在这个模块中几个过程都变,让后再运行(3)时就无响应了(1)DimkAsString-------------------...
关键步骤简化一下就是这样,我觉得就是k的问题,k在这个模块中几个过程都变,让后再运行(3)时就无响应了
(1)Dim k As String
----------------------------------------------
Private Sub Command1_Click()
Call cszm
End Sub
--------------------------
(2)Private Sub cszm()
Dim i%, j%
Label1.Top = 0
k = ""
i = Int(Rnd * 4 + 4)
For j = 1 To i
k = Chr(Int(Rnd * 23) + 96) & k
Next j
Label1.Caption = k
End Sub
---------------------------------------------------
(3)Private Sub Form_KeyPress(KeyAscii As Integer)
Dim i%
For i = 1 To Len(k)
If Label1.Top > 3000 Then Exit For
If KeyAscii = Asc(Mid(k, i, 1)) Then
Label1.ForeColor = RGB(Int(Rnd * 225), Int(Rnd * 225), 1)
Else
i = i - 1
End If
Next i
End Sub
----------------------------------------
(4)Private Sub Timer1_Timer()
Label1.Top = Label1.Top + 50
If Label1.Top > 3000 Then
Call cszm
End If
End Sub 展开
(1)Dim k As String
----------------------------------------------
Private Sub Command1_Click()
Call cszm
End Sub
--------------------------
(2)Private Sub cszm()
Dim i%, j%
Label1.Top = 0
k = ""
i = Int(Rnd * 4 + 4)
For j = 1 To i
k = Chr(Int(Rnd * 23) + 96) & k
Next j
Label1.Caption = k
End Sub
---------------------------------------------------
(3)Private Sub Form_KeyPress(KeyAscii As Integer)
Dim i%
For i = 1 To Len(k)
If Label1.Top > 3000 Then Exit For
If KeyAscii = Asc(Mid(k, i, 1)) Then
Label1.ForeColor = RGB(Int(Rnd * 225), Int(Rnd * 225), 1)
Else
i = i - 1
End If
Next i
End Sub
----------------------------------------
(4)Private Sub Timer1_Timer()
Label1.Top = Label1.Top + 50
If Label1.Top > 3000 Then
Call cszm
End If
End Sub 展开
展开全部
删掉下面这一句即可!
i = i - 1
这一句会导致i反复等于1,从而导致死循环。
从你的代码来开,这句代码也毫无任何意义,去掉这一句,就可以键入与字符串中任意一个字符相同的字母,那么label1标签字体就会变换颜色。
重点:
Form1.autoRedraw 必须设定为True
Form1.Keypreview 必须设定为True
Timer1控件的,Interval属性请设定一个100~1000以内的整数。
i = i - 1
这一句会导致i反复等于1,从而导致死循环。
从你的代码来开,这句代码也毫无任何意义,去掉这一句,就可以键入与字符串中任意一个字符相同的字母,那么label1标签字体就会变换颜色。
重点:
Form1.autoRedraw 必须设定为True
Form1.Keypreview 必须设定为True
Timer1控件的,Interval属性请设定一个100~1000以内的整数。
更多追问追答
追问
额,其他语句我省略了,这个描述是必不可少的,所以求大神给更好做法,问题是打字游戏,出来一个单词,然后从第一个字母开始每打对一个字母,则keyacsii进行与下一个字母的比较,和金山打字里的太空大战差不多
追答
那你应该是一次出现一个字母,而不是一串。
因为你无法对每一个字符进行更改颜色,记忆力不好的人,也不知道到底输到了第几个数字,那么你的游戏也就没有了更好的娱乐性。
如果你一定要打对每一个字母,建议你新加入一个模块级变量xx,对一个则存储一个到xx里面,直到xx与k相同,那么再进行下一组判断!
而且这种情况下,就完全可以不必使用循环!使用mid(k,len(xx) + 1,1)来判断即可!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询