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