| littlewater |
06-06-30 21:09 |
现在我们的程序还只有一个壳子,没有灵魂,代码才是一个程序的主体。 要学好代码并非一朝一夕就可以完成,这需要长时间的努力,不过这次程序的代码十分
简单,相信你一下就可以悟通的。
接下来就是代码编辑了,选择窗体,右键单击选择“察看代码”,你会看到一个新的窗
口。是不是已经有了这么几行: Private Sub UserForm_Click()
End Sub 不要他,全部删除,直到你看到左上方的选项栏里面变成“通用”,右上方的变成“声
明”为止。 好了我们现在就要“声明”了(以下三行):
Dim MySelection1 As Integer Dim ComputerSelection1 As Integer Dim Result1 As String
最好不要粘贴过去,自己手动输入一下你会体会到VB的一些特性。
你看到“Dim”“As”等变成了蓝色,这些都是VB的保留字,保留字是什么?暂时不用搞
得太深,你只要知道保留字时VB“认得”的字就行了。 Dim是什么意思呢?它的作用是定义变量。(变量是什么你应该知道吧,不然你拿你初中
的数学书翻一下) Dim MySelection1 As Integer的意思是:定义一个名叫“MySelection1”的Integer类
型的变量。 Integer是什么类型呢?它叫做 整型 ,也就是只能存储整数,占用两个字节,但不是任
何整数都能存储,必须是-32768到32767的整数。过大获过小都会造成数据溢出。
类似地,还有长整型(Long),它占用四个字节,存储范围-2147483648到2147483647,
如果你喜欢,你也可以将上面两行代码中的Integer改为Long,只是本程序没必要用那么
多,多占了点内存而已。
有存储数的,也就有存储其他的,比如字符。String型变量就是存储字符的,它叫做字
符串。它的长度可以变化,可以存一个或多个字符,比如“A”、“Hello!”、“大家好
”等等,在VB中每个字符占两个字节。
好了,我们声明了3个变量,下来就要对他们进行操作了。 在左上方写着“通用”的选项栏中选择OptionButton1,如果不出所料右边的选项栏也由
声明变成“Click”,而代码中则出现了这些:
Private Sub OptionButton1_Click()
End Sub
而且还多了一条横线隔开了我们刚才输入的代码,好了,在这两行中间加入: MySelection1 = 1 这样就变成了 Private Sub OptionButton1_Click() MySelection1 = 1 End Sub 这是什么意思呢?Click是什么你知道吧?是单击的意思。这代码的意思是,如果一旦单
击名称为OptionButton1的控件,就执行中间夹着的代码 MySelection1 = 1 。 也就是说,你在Private Sub OptionButton1_Click()和End Sub中间写的任何代码都会
在有人单击名称为OptionButton1的控件后执行。 至于MySelection1 = 1,确切地写应该是 Let MySelection1 = 1 ,现在清楚意思了吧
,就是让这个名为MySelection1 的变量里面保存的数据为1。而Let在这种情况下可以省
略。
现在抛开我们的程序,看看这句代码:n=n+1,这在数学上是永远也不会成立的,但是在
代码中却是正确的,你给它的前面加上一个Let,现在清楚多了吧,Let n=n+1,意思是
说让现在的n这个变量的值等于过去的n里的值加上1,作用就是让n这个变量里的值增加
一,所以这里的“=”不是相等的意思,而是“赋值”,要搞清楚。
好了,回到程序,用同样的方法添入以下代码: Private Sub OptionButton2_Click() MySelection1 = 2 End Sub
Private Sub OptionButton3_Click() MySelection1 = 3 End Sub 成功的话应该有好几条横线把他们隔开了吧?这就是说,它们之间是相互独立的,每一
个在执行到End Sub之后就完了,不会接着执行其他的代码。
3个选项按钮的代码已经全部搞定,接下来是控制按钮的代码,同样的方法: Private Sub CommandButton1_Click() If MySelection1 = 0 Then MsgBox "请先选择!" ComputerSelection1 = Int(Rnd * 3) + 1 End Sub 下来解释一下,第一行和最后一行不用说了吧,一样的道理。 If MySelection1 = 0 Then MsgBox "请先选择!" 这一句其实很好理解,就是当 MySelection1 = 0 时,执行 MsgBox "请先选择!"
这个语句,Msgbox "请先选择!" 的意思是,弹出一个上面写有“请先选择!”字样的
对话框。 这里要注意的是,这次的“=”不再是“赋值”的意思,而就是“相等”的意思。如果你
是在搞不清,以后赋值的语句前都写上 Let。
下面的一句:ComputerSelection1 = Int(Rnd * 3) + 1 涉及两个函数:Int()和Rnd()。 Int()的做用是取整,即得到一个不大于原来数字的整数,如:Int(4)的结果是4,Int
(4.1)的结果也是4,Int(4.8)的结果还是4。注意:这里取整是取“不大于”原来数字的
整数,如果Int(-4.5)得到的结果是-5。 Rnd()函数的作用是得到一个随机数(也就是随便得到一个数),不过范围是0到1之间的
一个小数。(但是不包括0或1) 所以Rnd*3的结果是随便得到一个0到3之间的小数,外面套个Int()后结果就成了0到2之
间的整数(当然包括0和2),在加上个1,所以整个语句的作用就是随便得到1、2、3之
中的一个数,储存在名叫ComputerSelection1的变量中。
你现在明白了吧,MySelection1 和ComputerSelection1着两个变量分别存储着你和电脑
的选择,1代表“石头”,2代表“剪子”,3代表“布” 。程序就是把感性化的东西用
数字表示出来。
下来我们要判断你和电脑到底谁赢了。 在所有过程(在Private Sub 和 End Sub 以及之间的代码称为一个子程序,算是一个过
程)外,也就是找最下面空的地方输入: Function Judge1 回车,你看看效果,你的输入自动变成了:
Function Judge1()
End Function 这是什么呢?这是一个你自己定义的函数,名叫Judge1。它和上面的那些子程序一样,
也算作一个过程,也就是说它和上面的那些代码之间也是相互独立的,不然为什么又会
多出一条横线把它和上面的代码隔开?呵呵。
现在你定义了一个名叫Judge1的函数,当然要有用。“Function”这个单词有“函数”
的意思,也有“功能”的意思,你要让它实现一个功能,才是创建它的目的。 在这里我们要让它判断到底谁赢了。
把下面的代码一股脑放到你的函数中去(即Function Judge1()和 End Function之间) If ComputerSelection1 = 1 Then
If MySelection1 = 1 Then Result1 = "平局" ElseIf MySelection1 = 2 Then Result1 = "你输了" ElseIf MySelection1 = 3 Then Result1 = "你赢了" End If
ElseIf ComputerSelection1 = 2 Then
If MySelection1 = 1 Then Result1 = "你赢了" ElseIf MySelection1 = 2 Then Result1 = "平局" ElseIf MySelection1 = 3 Then Result1 = "你输了" End If
ElseIf ComputerSelection1 = 3 Then
If MySelection1 = 1 Then Result1 = "你输了" ElseIf MySelection1 = 2 Then Result1 = "你赢了" ElseIf MySelection1 = 3 Then Result1 = "平局" End If
End If
这个代码看起来很麻烦,实际上逻辑很简单。 首先看这个大结构: If ComputerSelection1 = 1 Then '语句1 ElseIf ComputerSelection1 = 2 Then '语句2 ElseIf ComputerSelection1 = 3 Then '语句3 End If 它的意思是先看ComputerSelection1 = 1是否成立,如果成立就执行 语句1 ,如果不成
立再看ComputerSelection1 是否等于 2 ,如果等于就执行 语句2 ,如果还不成立再看
ComputerSelection1 = 3是否成立,如果成立就执行 语句3 ,如果这些都不成立就什么
也不执行。
这就是用于判断的If语句的复杂形式。注意,如果你的Then后面直接跟另一个语句那么
就不需要End If ,如果你Then后面的语句很多需要另提一行写,那么最后必须用End If
封底,好让电脑知道你下面到多少句属于If可以影响的范围。
上面那很长一段代码其实主要的架构就是如此,只不过将那些“语句1”、“语句2”等
换成了另一个If结构,也就是大的If结构中套着3个小的,现在清楚了吧?能看明白这段
代码了吧?
好了,我们的这个名为Judge1的函数编制完成,可以使用了,怎么用?很简单,还记得
刚才你给 Private Sub CommandButton1_Click()
End Sub 之间加了两行代码 If MySelection1 = 0 Then MsgBox "请先选择!" ComputerSelection1 = Int(Rnd * 3) + 1 吗?在它后面在加上一句 Judge1 就行了。调用这个函数只需要输入它的名称即可,简单吧。
接下来我们要通报结果了:
首先应该知道电脑到底选择了石头还是剪刀还是布。 同样的方法创建一个函数ShowComputerSelection1,在那两行中间加入: If ComputerSelection1 = 1 Then Label1.Caption = "石头" ElseIf ComputerSelection1 = 2 Then Label1.Caption = "剪子" ElseIf ComputerSelection1 = 3 Then Label1.Caption = "布" End If 你应该能够看懂,Label1.Caption指的就是名叫Label1的控件的Caption属性。
最后我们还要通报谁赢了:
Function ShowResult1() Label2.Caption = Result1 End Function 这样一个ShowResult1函数就可以解决问题。
等等,这还没完,你创建了函数还得使用它呀,在Private Sub CommandButton1_Click
()的那个过程里Judge1语句后面,把它们的名称输入进去就OK了!
…… …… 好了,大功告成!赶快按F5运行看看结果?怎么样?你的一个完整的程序就这样制作出来了,而且是用Word制作的呢(某程序员:倒~) |
|