看实例玩编程(22):跟我学做抽奖程序

软件世界

  抽奖活动在生活中屡见不鲜,给我们日常生活也增添了不少乐趣。这里向大家介绍一种都很熟悉的电脑模拟抽奖游戏,就像各类晚会上经常使用的抽奖模式。抽奖程序操作要求方便直观,全体人员都可以清楚地观看抽奖全过程。

  一、设计界面

  先打开VB,在Form1中定义六个命令按钮,分别用来显示中奖号码的各位数字。默认情况下,参加的人数应少于10万人(当然,可以通过增加或减少按钮的个数,扩大或缩小参加抽奖人数的范围)。再增加两个命令按钮,一个设置为“确定”键,当按下时,显示中奖号码。另一个设置为“继续”键,让计数器在选出中奖号码后接着继续滚动,直至再次按下“确定”键(界面如图)。

  再新建一个窗体Form2,加入一个文本输入框,一个命令按钮,一个标签。其中文本框用于输入参加本次活动的人数;命令按钮用于确定和检验输入的字符串是否合法;标签用于显示本次活动参加的人数。

  这个程序调用系统随机函数rnd来实现号码的随机产生,定义函数quwei()来显示号码的各位数字,通过Form2中的文本输入,来限制滚动时出现的最大号码。

  具体代码实现如下:

  Private Sub Command1_Click()

  If Text1.Text = “” Then

  Exit Sub

  Text1.SetFocus

  End If ‘如果为空,要求重新输入。

  If Len(Text1.Text) > 5 Then

  MsgBox “提示”, vbOKOnly, “你输入的值太大”

  Text1.Text = “”: Text1.SetFocus

  Exit Sub

  End If ‘如果太大,清空后再重新输入

  If Int(Text1.Text) < 6 Then

  MsgBox “提示”, vbOKOnly, “你输入的值太小”

  Text1.Text = “”:Text1.SetFocus

  Exit Sub

  End If ‘如果太小,清空后再重新输入

  Form2.Hide ‘关闭Form2

  Form1.Show ‘打开Form1

  Load Me

  End Sub

  Private Sub Text1_KeyPress(KeyAscii As Integer)

  If Not (48 <= KeyAscii And KeyAscii <= 57 ) Then

  If KeyAscii <> 8 Then

  KeyAscii = 0 ‘容错,使输入的整数值有效

  End If

  End If

  End Sub

  二、实现抽奖过程的代码

  Const max = 100000 ‘范围设置

  Dim d(0 To 5) As Integer ‘存储号码各位数字

  Dim number(0 To 5) As Long ‘存储中奖号码

  Dim ss, zhongjiang As Long

  Dim stop_1 As Boolean ‘是否选定

  Dim cishu As Integer ‘中奖次数

  Public Function panduan(ByVal sa As Long)

  panduan = False

  Dim i

  For i = 0 To 5

  If sa = number(i) Then

  panduan = True

  GoTo dd

  End If

  Next

  dd:

  End Function ‘判断是否出现过此号码

  Public Sub quwei(ByVal sa As Long)

  Dim i As Integer

  For i = 0 To 5

  d(i) = sa Mod 10

  sa = sa \ 10

  Next

  For i = 0 To 5

  Me.Command1(i).Caption = d(5 - i) ‘显示各位数字

  Next

  End Sub

  Private Sub Command2_Click(Index As Integer)

  If Index = 0 Then

  If cishu > 5 Then

  MsgBox “提示”, vbOKOnly, “中奖的次数已经超过六次了!”

  Timer1.Enabled = False

  Dim i

  For i = 0 To 5

  If i < 2 Then

  Command1(i).Visible = False

  Command2(i).Visible = False

  End If

  Command1(i).Visible = False

  Next

  Dim string1

  string1 = “本轮中奖的号码为:” + CStr(number(0)) + “ ” + CStr(number(1)) + “ ” + CStr(number(2))

  string1 = string1 + CStr(number(3)) + “ ” + CStr(number(4)) + “ ” + CStr(number(5))

  Label1(0).Caption = string1 ‘显示中奖号码

  Label1(0).Visible = True ‘提示性标签显示

  Exit Sub

  End If

  number(cishu) = ss

  cishu = cishu + 1

  stop_1 = True

  Else

  stop_1 = False

  End If

  End Sub

  Private Sub Form_Load()

  Randomize Timer ‘调用系统函数,保证产生的数是随机的

  Label1(0).Visible = False

  stop_1 = False

  Dim i

  cishu = 0

  For i = 0 To 5

  number(i) = 0

  ss = (Int(Int(Form2.Text1.Text) * Rnd) + 1) Mod Int(Form2.Text1.Text) + 1

  Next

  End Sub ‘初始化变量

  Private Sub Timer1_Timer()

  If Not stop_1 Then

  ss = (Int(Int(Form2.Text1.Text) * Rnd) + 1) Mod Int(Form2.Text1.Text) + 1

  While (panduan(ss))

  ss = (Int(Int(Form2.Text1.Text) * Rnd) + 1) Mod Int(Form2.Text1.Text) + 1

  Wend

  quwei ss

  Else

  Exit Sub

  End If

  End Sub

  好了,至此我们已经完成了一个简单的电脑模拟抽奖程序的编写,希望你能设计出更好的模拟程序来。

  以上程序在Windows2000,中文VB6.0企业版中顺利通过。