實(shí)例三:“猜數(shù)游戲”
知識點(diǎn):
1、電腦首先生成一個(gè)0到99之間的整數(shù);
2、請您輸入您所猜的數(shù);
3、把您輸入的數(shù)與電腦所生成的數(shù)進(jìn)行比較,并給出“您猜大了”或“您猜小了”的提示;
4、如果您猜對了,則退出程序;如果您沒有猜對,則循環(huán)回第二步重復(fù)運(yùn)行,讓您再次輸入自己所猜的數(shù)。
’ ’=========程序名“您猜”=========
Sub 您猜()
Dim a, b, c, d’申明了四個(gè)變量,變量間用英文逗號分開,與前面實(shí)例二申明變量的寫法不同,結(jié)果相同。
a = 0’這個(gè)變量用于計(jì)算您猜了多少次。
Randomize’準(zhǔn)備生成一個(gè)隨機(jī)的數(shù)字,先初始化隨機(jī)數(shù)生成器。
b = Int(100 * Rnd) ’生成一個(gè)百以內(nèi)的隨機(jī)數(shù),“Rnd”就是“隨機(jī)數(shù)生成函數(shù)”。
Do’開始循環(huán)
a = a + 1’您猜的次數(shù)增添一次。當(dāng)再次循環(huán)到這兒時(shí),次數(shù)會繼續(xù)往上加。
c = InputBox("請輸入您所猜的數(shù)")’將取得的值賦予變量“c”,“c”是字符串!
d = CInt(c) ’將變量“c”轉(zhuǎn)化為整數(shù),再將值賦給“d”。
If b < d Then’進(jìn)行比較,如果猜大了。
MsgBox ("您猜的數(shù)大了")’顯示比較的結(jié)果。
ElseIf b > d Then’進(jìn)行比較,如果猜小了。
MsgBox ("您猜的數(shù)小了")’顯示比較的結(jié)果。
Else: b = d’進(jìn)行比較,如果猜對了。
MsgBox ("哈哈,您猜對了!") ’顯示比較的結(jié)果。
Exit Do’既然已經(jīng)猜對了,就跳出循環(huán)。
End If’結(jié)束比較。
Loop’回到前面的Do,繼續(xù)循環(huán)。
MsgBox ("您猜了" & a & "次!") ’彈出消息框,并使用了字符串連接。
End Sub’結(jié)束程序。
運(yùn)行本程序,看看效果。并根據(jù)注釋,體會循環(huán)與判斷在本程序中的作用。
代碼解說:
生成隨機(jī)數(shù),是很多程序中要用到的功能(特別是游戲,比如游戲中隨機(jī)生成不同的怪物或不同的寶物等。),上面的內(nèi)容希望大家能悉心地體會。
對于VBA的數(shù)據(jù)類型,這里主要為大家介紹兩種:
Integer——包含 -32,768 到 32,767 之間的整數(shù)。該類型的數(shù)值基本上可以滿足我們通常使用整數(shù)時(shí)的需要;
String——包含變長字符串,最大長度可為 20 億個(gè)字符。該類型的值其實(shí)就是我們常用的字符串。
我們在程序當(dāng)中用的CInt函數(shù),就是將一個(gè)String類型(字符)的值,轉(zhuǎn)換成了一個(gè)Integer類型(整數(shù))的值。所以我們稱CInt函數(shù)為“轉(zhuǎn)換函數(shù)”。
與CInt類似的常用轉(zhuǎn)換函數(shù)還有:Clin、CSng、CStr等??梢园裋BA幫助文件中的“轉(zhuǎn)換函數(shù)”與“數(shù)據(jù)類型”相互參照進(jìn)行學(xué)習(xí)。(相信這個(gè)時(shí)候您看幫助文件中的這部分內(nèi)容,將不會再是一件難事。)
感覺到困難了嗎?如果感覺到了困難,就請將上面的內(nèi)容再體會體會。準(zhǔn)備進(jìn)入下一個(gè)知識點(diǎn)。
程序中的DO、Exit Do以及Loop為一個(gè)整體。其中,Do是開始進(jìn)入循環(huán); Loop是指回到Do語句處,再次進(jìn)行循環(huán); ExitDo是指當(dāng)符合某一個(gè)條件時(shí)就直接退出循環(huán)。在本程序中,Exit
程序中數(shù)字的比較,是利用If語句來實(shí)現(xiàn)的。在實(shí)例二中,我們已接觸過 If 語句,If語句的基本格式是:
If(條件)Then(結(jié)果)End If’(結(jié)束If判斷語句)
在 If 語句判斷的過程當(dāng)中,還可以有子判斷語句:Elseif then 。
對于一個(gè)具有多重判斷的語句,我們大致可以這樣理解:如果(If),那么(Then),否則(Elseif),那么(Then),再否則(Elseif),那么(Then)……(ElseIf根據(jù)情況可以套嵌很多層)最終(Else),結(jié)束判斷(EndIf)。
本實(shí)例的知識擴(kuò)展:
好了,到這里,我們再回過頭來看一看這個(gè)程序,理解起來還有困難嗎?本實(shí)例可能比前兩個(gè)實(shí)例稍難一點(diǎn)。如果您能順利完成知識擴(kuò)展中的問題題,那么祝賀您,您已過了入門的第一個(gè)小難關(guān),可以進(jìn)入下一步的實(shí)例四了,如果您還存在疑問,則再請多動手把前三個(gè)實(shí)例練一練?。?br>
附:完善的猜數(shù)游戲——
Sub 您猜()
Dim a, b, c, d, e, f
e=6’該數(shù)字用于計(jì)算所猜次數(shù)是否為優(yōu)、良等
Do
a = 0
Randomize
b = Int(100 * Rnd)
Do
a = a + 1
c = InputBox("請輸入您所猜的數(shù)")
d = CInt(c)
If b < d Then
MsgBox ("您猜的數(shù)大了")
ElseIf b > d Then
MsgBox ("您猜的數(shù)小了")
Else: b = d
MsgBox ("哈哈,您猜對了!")
Exit Do
End If
Loop
MsgBox ("您猜了" & a & "次!")
If a>e
MsgBox ("您還需努力!")
Elseif aMsgBox ("您的猜數(shù)能力:優(yōu)!")
Else a=e
MsgBox ("您的猜數(shù)能力:良!")
End if
f=MsgBox ("您還愿意繼續(xù)玩嗎?",4,”繼續(xù)游戲”)’’注意此處常數(shù)的使用
if f=7 then’’注意此處消息框返回值的使用
exit do
else
end if
loop
End Sub