天天看點

VB随機數專題案例

案例:實作一個随機數值的猜測。

需要兩個窗體:

VB随機數專題案例

form1窗體界面

VB随機數專題案例

form2窗體界面

在form1中的按鈕文字,我們通過代碼來實作,同時輸出幾個随機數做練習。

form1窗體的代碼:

Private Sub Command1_Click()
Form2.Show
End Sub

Private Sub Form_Load()
Show

Print Int(5.8)

Print Int(-1.2)

Randomize

Print Int(Rnd * 101)

'修改按鈕文字為“開始遊戲”
Command1.Caption = "開始遊戲"

End Sub           

複制

其中,Form2.Show表示顯示form2窗體。

這裡要注意的是,在列印print輸出前,在form_load事件中要加上關鍵字Show

int函數表示向下取整函數。

Print Int(5.8)列印輸出的結果是5

Print Int(-1.2)列印輸出結果為-2

注意負數的向下取整會與整數的思維比較不同,但總體原則都是取比原來數值小的最接近的那個整數。

Randomize是随機數種子,可以使得增大随機數不同的機率。

Print Int(Rnd * 101)表示輸出[0,101)之間的随機整數。

Command1.Caption = "開始遊戲"表示給form1中的那個按鈕指派一個文字。

form1效果圖如下:

VB随機數專題案例

form2窗體代碼:

Dim a As Integer

Private Sub Command1_Click()
Dim s As String

s = InputBox("請輸入猜測的數值:", "猜測消息")

Print s
If Val(s) > a Then
    MsgBox "猜大了", , "消息"
ElseIf Val(s) < a Then
    MsgBox "猜小了", , "消息"
Else
    msgxo "恭喜你,才對了!可以買彩票啦!"
End If

End Sub

Private Sub Form_Load()
Form2.Caption = "猜數字遊戲--作者:辣椒油"

'給變量a指派,指派為一個随機數
Randomize
'系統随機生成一個1~100之間的随機整數
a = 1 + Int(Rnd * 100)
Show
Print "系統已經随機生成一個1~100之間的随機整數"
Print a


End Sub           

複制

注意:

  • Dim a As Integer是在form2窗體的“通用”中的,表示form2窗體的全局變量。
  • Dim s As String表示聲明一個自定義的變量s為字元串類型。
  • InputBox("請輸入猜測的數值:", "猜測消息")輸出的結果是一個字元串類型,是以,我們将輸出結果傳回到s中
  • Val(s) > a 在if語句中進行比較的時候,我們要把比較的值都轉為數值類型才能正常比較。
  • val函數的作用:就是将字元串類型轉為數值類型。

我們通過以下語句來進行判斷是否猜中數值:

If Val(s) > a Then
    MsgBox "猜大了", , "消息"
ElseIf Val(s) < a Then
    MsgBox "猜小了", , "消息"
Else
    msgxo "恭喜你,才對了!可以買彩票啦!"
End If           

複制

這裡的if...elseif...else ....end if 這個語句中的if條件隻會進入其中某一條。

form2效果圖如下:

VB随機數專題案例

猜測效果圖:

VB随機數專題案例

正在輸入猜測數值

VB随機數專題案例

猜大的情況

VB随機數專題案例

猜小的情況

VB随機數專題案例

猜對的情況

補充思考:

添加一個form3窗體,作用是“倒計時遊戲開始時間”。

我們将form1窗體的開始遊戲按鈕,點選後,跳轉到form3窗體,然後,form3窗體預設從10開始倒計時,每一秒減去一,直到為0時,跳轉到遊戲窗體form2窗體。

項目結構如下圖:

VB随機數專題案例

form3窗體的界面設計如下圖:

VB随機數專題案例

form3窗體源代碼:

Private Sub Form_Load()
Me.Caption = "遊戲倒計時..."
Label1.Caption = 10
End Sub

Private Sub Timer1_Timer()
Label1.Caption = Val(Label1.Caption) - 1

If Label1.Caption = "5" Then
Form2.Show
Timer1.Enabled = False
End If

End Sub           

複制