VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 幸运大抽奖
发表评论(0)作者:, 平台:, 阅读:9376, 日期:2000-05-14
资料整理:影子 VB爱好者乐园 http://yingzi007.126.com

主题:幸运大抽奖

作者:沈阳 LOVEN




   临近年末,学校活动频繁,活动之余,组织者别出心裁地提出新的活动方式:有奖活动。此举可算大快人心,可对我来说,这意味着新的工作又来了,(我干什么的?呵呵,不告诉你!)传统的抽奖形式大家比我还熟悉。要我编个程序实现之,这可在以前没做过。凡事都有第一次,经过一阵子的思索,嘿,有了,近日我正学VB,里头有一个VB自带的Timer控件,书上说它的功能非常强大,看了可就是没用过,这下可试一试了。

  Timer(定时器)控件响应时间的流逝,它独立于用户,编程后可以用来在一定的时间间隔执行操作。对于其它后台处理,Timer控件也非常有用。

  Timer控件的其它属性,大家可能已经有所了解。我想说一下Interval属性,它指定定时器事件的豪秒数。除非禁止此属性,否则定时器在大致相等的时间间隔不断接受事件(称作定时器事件会更贴切)。

  好了,说了那么多,动手吧。下图是程序的运行结果,自己动手准备一张背景图、四个Image控件(用于存放转盘图案)、四个Shape控件(我将它们定义成控件数组,定义其Shape属性为3,Fillcolor属性为任意颜色、Visible属性为False)、四个Label控件(我将它们定义成控件数组,BorderStyle属性为0,AutoSize属性为True),两个Command控件(为了美观需要,我将它们做得很小,且放在角边上),差不多了,开始编程吧。以下是写的原程序,大家共同切磋切磋。

  Option Explicit 强行变量定义Dim MySum As Double 有效的抽奖人数Dim MyInt As Interger有效抽奖人数取整Dim Qin, Bai, Shi, Ge As Integer 定义千、百、十、个位数Dim d1 As Double 定义圆盘半径长度Dim x1, y1, x2, y2, x3, y3, x4, y4 As Double圆盘的中心

  Dim XX1, YY1, XX2, YY2, XX3, YY3, XX4, YY4 As DoubleShape的中心

  Const MyAng = 3.1415926 / 180定义弧度

  Private Sub Command1_Click()抽奖按钮

  Shape(0).Visible = True

  Shape(1).Visible = True

  Shape(2).Visible = True

  Shape(3).Visible = True

  Timer1.Enabled = True

  Command1.Enabled = False

  Command2.Enabled = True

  Command2.SetFocus

  End Sub

  Private Sub Command1_KeyPress(KeyAscii As Integer)

  Dim b

  If KeyAscii = 27 Then

  b = MsgBox(“ 感谢你使用我们的软件!真的要退出程序吗?" & Chr(13) & Chr(13)

  & “螺纹精神造福同仁!", vbYesNo + vbInformation, “螺纹工作室")

  If b = vbYes Then End

  End If

  End Sub

  Private Sub Command2_Click()确定按钮

  Timer1.Enabled = False

  Command1.Enabled = True

  Command1.SetFocus

  End Sub

  Private Sub Form_Load()

  On Error GoTo MyErr

  b:

  MySum = InputBox(“请输入有效的抽奖人数",“幸运抽奖")实时输入有效的抽奖人数初始化转盘的位置

  x1 = Image4.Left + Image4.Width / 2

  y1 = Image4.Top + Image4.Height / 2

  x2 = Image3.Left + Image3.Width / 2

  y2 = Image3.Top + Image3.Height / 2

  x3 = Image2.Left + Image2.Width / 2

  y3 = Image2.Top + Image2.Height / 2

  x4 = Image1.Left + Image1.Width / 2

  y4 = Image1.Top + Image1.Height / 2

  d1 = 1200圆盘半径

  Exit Sub

  MyErr:

  If Err.Number = 13 Then

  MsgBox “请输入有效的抽奖人数", vbInformation, “警告"

  GoTo b

  End If

  End Sub

  Private Sub Timer1_Timer()定时器事件

  利用随机数产生抽奖结果

  MyInt = Int(Rnd * (MySum + 1))有效抽奖人数取整

  Qin = Int(MyInt / 1000)获得千位数

  Bai = Int((MyInt - Qin * 1000) / 100)获得百位数

  Shi = Int((MyInt - Qin * 1000 - Bai * 100) / 10)获得十位数

  Ge = Int(MyInt - Qin * 1000 - Bai * 100 - Shi * 10)获得个位数

  用于显示抽奖结果

  Label1(0).Caption = Qin

  Label1(1).Caption = Bai

  Label1(2).Caption = Shi

  Label1(3).Caption = Ge

  计算Shape的中心

  XX1 = x1 + d1 * Cos(((Qin - 3) * 36 + 18) * MyAng)

  YY1 = y1 + d1 * Sin(((Qin - 3) * 36 + 18) * MyAng)

  XX2 = x2 + d1 * Cos(((Bai - 3) * 36 + 18) * MyAng)

  YY2 = y2 + d1 * Sin(((Bai - 3) * 36 + 18) * MyAng)

  XX3 = x3 + d1 * Cos(((Shi - 3) * 36 + 18) * MyAng)

  YY3 = y3 + d1 * Sin(((Shi - 3) * 36 + 18) * MyAng)

  XX4 = x4 + d1 * Cos(((Ge - 3) * 36 + 18) * MyAng)

  YY4 = y4 + d1 * Sin(((Ge - 3) * 36 + 18) * MyAng)

  利用Shape画圆

  Shape(0).Left = XX1 - Shape(0).Width / 2

  Shape(0).Top = YY1 - Shape(0).Height / 2

  Shape(1).Left = XX2 - Shape(1).Width / 2

  Shape(1).Top = YY2 - Shape(1).Height / 2

  Shape(2).Left = XX3 - Shape(2).Width / 2

  Shape(2).Top = YY3 - Shape(2).Height / 2

  Shape(3).Left = XX4 - Shape(3).Width / 2

  Shape(3).Top = YY4 - Shape(3).Height / 2

  End Sub

  怎么样,想好了没,动手吧!(以上程序在VB5.0,Windows98调试通过)