Re: [VB6 ] 新手问题

楼主: KawasumiMai (さあ、死ぬがいい)   2013-08-20 15:03:44
***************************************
很久没有用VB6了
由于没有实测过,所以有些地方如果有写错请见谅
***************************************
首先是这一段
If a = 2 Then
Text1.Text = "电脑-20%血量!"
Else
If a = 4 Then
Text1.Text = "玩家-20%血量!"
Else
If a = 1 Then
Text1.Text = "平手"
Else
If a = 3 Then
Text1.Text = "平手"
Else
If a = 5 Then
Text1.Text = "平手"
End If
End If
End If
End If
End If
下面有一堆End If
所以排起来是"巢状"
可是明明是依序Else下来
所以可以不用用到巢状
If a = 2 Then
Text1.Text = "电脑-20%血量!"
Else If a = 4 Then
Text1.Text = "玩家-20%血量!"
Else If a = 1 Then
Text1.Text = "平手"
Else If a = 3 Then
Text1.Text = "平手"
Else If a = 5 Then
Text1.Text = "平手"
End If
*****************************************************************************
接着,虽然是Else If
不过既然只有判定a的值,而a不可能同时有两种情况
代表这些Else并没有判定的顺序差别
所以可以用Select Case
Select Case a
Case 2
Text1.Text = "电脑-20%血量!"
Case 4
Text1.Text = "玩家-20%血量!"
Case 1
Text1.Text = "平手"
Case 3
Text1.Text = "平手"
Case 5
Text1.Text = "平手"
End Select
有没有觉得跟上面的这段很像?
Select Case a
Case 1
Text2.Text = "金"
Case 2
Text2.Text = "木"
Case 3
Text2.Text = "水"
Case 4
Text2.Text = "火"
Case 5
Text2.Text = "土"
End Select
这表示这两段根本可以写在一起
Select Case a
Case 1
Text1.Text = "平手"
Text2.Text = "金"
Case 2
Text1.Text = "电脑-20%血量!"
Text2.Text = "木"
Case 3
Text1.Text = "平手"
Text2.Text = "水"
Case 4
Text1.Text = "玩家-20%血量!"
Text2.Text = "火"
Case 5
Text1.Text = "平手"
Text2.Text = "土"
End Select
*******************************************************************
接着,从判断来说,可以知道Command1这个按钮应该是"金"
也就是你必须要写五个按钮
但是其中又有很多地方需要重复
这表示你"必须要把他包成函式"
首先先改变一个想法
Select Case a
Case 1
Text2.Text = "金"
Case 2
Text2.Text = "木"
Case 3
Text2.Text = "水"
Case 4
Text2.Text = "火"
Case 5
Text2.Text = "土"
End Select
这个作法,表示你依据a=1~5改变text2的值
不过你可以把你需要的值存成阵列
Dim a as string = ("金","木","水","火","土")
然而为了相克判定方便,所以先写成想要的顺序
Dim a as string = ("水","土","木","金","火")
其中a(0)="水",而a(1)赢a(0),a(2)赢a(1).....依此类推
接着,用另一个变量i,去取a的值
Text2.text=a(i)
**********************************************************************
假设把按钮代表的字,也用数字表示
例如按下金的按钮,便一样用4代替
此外判定过程用函式表示
那么程式会变成这个样子
Private Sub Command1_Click()
Call judge(0) '假设按钮1是水
End Sub
Private Sub Command2_Click()
Call judge(1) '假设按钮2是土
End Sub
.......
依此类推
那么后面会是
Private Sub judge(p)
Text2.text=a(i) '秀出电脑的字,电脑的值是i,玩家的值是p
If (i>p or i=0 and p=4) Then '后者大于前者,但水>火(0>4)
Text1.Text = "玩家-20%血量!"
Else If(p>i or p=0 and i=4) Then
Text1.Text = "电脑-20%血量!"
Else
Text1.Text = "平手"
End If
End Sub
***************************************
作者: MOONRAKER (㊣牛鹤鳗毛人)   2013-08-20 17:52:00
你人会不会太好 |D
作者: damody (天亮damody)   2013-08-20 17:59:00
人好不错啊~ 人有时需要一点冲劲。
作者: magicen   2013-08-20 23:57:00
用心的大大给推:D

Links booklink

Contact Us: admin [ a t ] ucptt.com