-
用
VB
编了一个小程序来实现电脑抽奖的小功能
,其原理如下:
主要利用
VB
中的
Rnd
p>
函数,来实现随机查找和打乱排序的功能,从而实现随机抽奖的目的。
Rnd
函数的语法结构是
Rnd[(number)]
,
可选的
number
参数是
single
或任何有效的数值表达式。
Rnd
函数返回小于
1
但
大于或等于
0
的值。
number
的值决定了
Rnd
生成随机
数的方式。为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound
-
lowerbound
+
1)
×
Rnd
+
lowerbound)
这里,
upperbound
是随机数范围的上限,而
lowerbound
则是随机数范围的下限。
另外,程序中还使用了
INI
文件,
Windows INI
文件
,
可解释为
Windows
初始化文件。它是一种专门用来保存应用程序初始化信息和
运行环境信息的文本文件
。
ini
文件是一种文本文件
,
它可以通过
Notepad
等文本编辑器进行
编辑。
ini
文件具有特定的格式。一个
INI
文件是由若干个段
(section)
组成的
,
每个段中包含若干关键字
(key)
及相应的值
(value)
。
创建应用程序自己的
INI
文件
,
通过
INI
文件保
存应用程序的一些运行环境信息
,
然后在程序中读取
INI
文件中的设置信息并据以处理。一旦
程序的运行环境需要变更
,
则可以通过直接
修改
INI
文件,或在程序中提供专门的界面间接地修改<
/p>
INI
文件来保证程序的可用性。
源程序及注释如下:
'
窗体源程序
Option Explicit
Dim
m_strNameArray() As MyName
Dim m_bIsStart As Boolean
Dim m_nNameIndex As Integer
Dim MAX_INDEX
As Integer
Dim
m_nSelectNum As Integer
'
被选定数
Dim nScrollStep
As Integer
Dim
nScrollWidth As Integer
Dim bScrollState As Boolean
Dim nEnableSecond As
Integer
Dim
m_strTitle As String
Dim m_strAppTitle As String
Dim m_strScrollTitleLeft As
String
Dim
m_strScrollTitleRight As String
Private Sub
Command_Start_Stop_Click()
If m_bIsStart = True Then
'
按停止钮
m_bIsStart =
False
Command_Start_n =
“开始
Label_e = True
Timer_d = True
Timer_d = False
Label_FlashName =
m_strNameArray<
/p>
(
m_nNameIndex).strName
+
“中奖了!
m_strNameArray(m_nNameIndex).bIsSelect
= True
m_nSelectNum = m_nSelectNum
+
1
Dim Temp As MyName
Temp =
m_strNameArray(MAX_INDEX)
m_str Name
Array(MAX
-
INDEX) =
m_strNameArray(m_nNameIndex)
m_strNameArray(m_nNameIndex) =
Temp
MAX_INDEX =
MAX_INDEX
-
1
If MAX_INDEX = 0 Then
MsgBox
“非常感谢您使用本软件
End If
Else
'
按开始钮
m_bIsStart = True
Command_Start_n
=
“停止
Command_Start_d = False
Timer_d = True
Timer_d = False
Label_n =
“
End If
End Sub
Private Sub Form_Load()
Form_ode = 3
m_nNameIndex = 0
m_bIsStart =
False
Timer_d =
True
Timer_d =
True
Label_e =
False
Label_n =
“
nEnableSecond = 0
'
定义起始秒数
ReDimNameArray
'
获得文本中的名字和打乱名字顺序
nScrollStep = 5
'
设定滚动字的步长
nScrollWidth = Label_
'
设定<
/p>
title
的移动宽度
bScrollState =
False
'
设定缺省的开始滚动方向为向左
m_nSelectNum =
0
'
初始化被选定数为
0
Init
'
初始化本程序的界面
End Sub
Private Sub
Timer_FlashName_Timer()
'
闪动中奖者姓名
If Label_e = True Then
Label_e = False
Else
Label_e = True
End If
End Sub
Private Sub
Timer_ScrollName_Timer()
'
滚动出现名字
If m_bIsStart = True Then
If m_nNameIndex
>= MAX_INDEX Then
m_nNameIndex = 0
End If
m_nNameIndex =
m_nNameIndex
+
1
If
m_strNameArray(m_nNameIndex).bIsSelect = True Then
If m_nNameIndex
<
MAX
-
INDEX Then
m_nNameIndex =
m_nNameIndex
+
1
Else
m_nNameIndex = 0
End If
End If
Label_n = m_str
NameArray(m_nNameIndex).strName
'End If
End If
End Sub
Private Sub
Timer_ScrollTitle_Timer() '
滚动“恭喜发财
字样
If bScrollState = False
Then '
向左滚
nScrollStep = 10
Label_n =
m_strScrollTitleLeft
If nScrollWidth > 0 Then
nScrollWidth =
nScrollWidth
-
nScrollStep
Else
bScrollState = True
End If
Else
'
向右滚
nScrollStep =
-
10
Label_n =
m_strScrollTitleRight
If nScrollWidth < Form_idth
-
Label_ Then
nScrollWidth =
nScrollWidth
-
nScrollStep
Else
bScrollState = False
End If
End If
Label_ =
nScrollWidth
'<
/p>
以下为
8
秒钟内使“停止
按钮有效
If nEnableSecond <= 49 Then
If m_bIsStart =
True Then
nEnableSecond =nEnableSecond
+
1
End If
Else
If m_bIsStart = True Then
Command_Start_d = True
nEnableSecond =
0
End If
End If
End Sub
'
动态定义数组
Private Sub
ReDimNameArray()
Dim nMaxIndex As Integer
Dim strMaxIndex As String
Dim nIndex As
Integer
Dim
bIsBegin As Boolean
bIsBegin = False
nIndex = 0
Open
+
“
#
1
'
读文件
Do Until EOF(1)
If bIsBegin = False Then
Line Input
#
1, strMaxIndex
nMaxIndex =
Val(strMaxIndex)
MAX_INDEX = nMaxIndex
-
1
ReDim m_strNameArray(0 To nMaxIndex
-
1)
bIsBegin = True
Else
Line Input
#
1,
m_strNameArray(nIndex).strName
m_strNameArray(nIndex).bIsSelect =
False
nIndex =
nIndex
+
1
End If
Loop
'
以下为打乱人员顺序
10
次
Dim i As Integer
Dim j As
Integer
Dim
Temp As String
Dim nRandomNum As Integer
For j = 0 To 10
For i = 0 To nMaxIndex
-
1
nRandomNum = ((nMaxIndex
-
1)
×
Rnd) '
利用
Rnd
函数
Temp =
m_strNameArray(i).strName
m_strNameArray(i).strName =
m_strNameArray(nRandomNum).strName
m_strNameArray(nRandomNum).strName =
Temp
Next i
Next j
End Sub
Private Sub
Init() '
读取
INI
文件
p>
Dim X
As Long
Dim
lpFileName
Dim
Temp As String
×
50
lpFileName =
+
“
X = GetPrivateProfileString(
“
SYSTEM
“
AppTitle<
/p>
“抽奖程序
m_strAppTitle = Trim(Temp)
Temp
=
“
X = GetPrivateProfileString(
“
SYSTEM
欢迎使用抽奖程序
p>
m_strTitle =
Trim(Temp)
Temp
=
“
X = GetPrivateProfileString(
“
SYSTEM
“
ScrollTit
leRight
“恭喜发财
!!!
m_strScrollTitleRight =
Trim(Temp)
X =
GetPrivateProfileString(
“
SYS
TEM
“
ScrollTitleLeft
“龙年大发
!!!
m_strScrollTitleLeft = Trim(Temp)
Form_n =
m_strAppTitle
Label_n = m_strTitle
End Sub
模块源程序:
'
用于读
取
ini
文件的
API
函数
Declare Function
GetPrivateProfileString Lib
“
kernel32
“
GetPrivateProfileS
tringA
As String, ByVal lpKeyName As
String, ByVal lpDefault As String, ByVal
lpReturnedString As String, ByVal nSize As Long,
ByVal lpFileName As String) As Long
Public Type
MyName
strName
As String
bIsSelect As Boolean
End Type
由于程序利用的
windows i
ni
文件保存一些标题信息,因而可以方便的修改使用环境
,<
/p>
及标题内容。
见
ini
文
件内容:
[SYSTEM]
;
应用程序的
form
名称
App
Title=
“风云电脑抽奖
Test
;
窗口的内的标题
< br>(
限
9
个字
)
Title=
“大抽奖
;
右滚动的文字
(
仅能为
如下格式
:XXXX!!!)
<
/p>
ScrollTitleRight=
“恭喜发财
!!!
;
左滚动的文字
(
仅能为如下格式
:XXXX!!!)
Scro
llTitleLeft=
“祝您好运
!!!
< br>
如此一个小小的电脑抽奖程序便完成了。
以上程序在
VB6.0
Windows98
环境下编译通过
对于下雪的景象大家可能都不陌生,我们还是用
VB
来制作一个
下雪的景象吧。其实制作这样一个下雪的景象并不复杂,它的原理是首先
在底色为黑色的
屏幕上随机画出许多白点(雪花),然后使这些雪花不断地向下移动(重画),反复循环,就成功地模拟了下雪的
景象。
下面是这个小程序,你可以修改其中的一些数据调整雪花的密度和雪花落下的快慢
。
双击窗体写如下代码:
Dim Snow(1000, 2), Amounty
As Integer
Private Sub Form_Load()
DoEvents
Randomize
Amounty = 325
For J = 1 To Amounty
Snow(J, 0) = Int(Rnd
*
)
Snow(J, 1) = Int(Rnd
*
)
Snow(J, 2) = 10
+
(Rnd
*
20)
Next J
Do While Not (DoEvents = 0)
For LS = 1 To
10
For I = 1 To
Amounty
OldX =
Snow(I, 0): OldY = Snow(I, 1)
Snow(I, 1) = Snow(I, 1)
+
Snow(I, 2)
If Snow(I, 1) > Then
Snow(I, 1) =
0: Snow(I, 2) = 5
+
(Rnd
*
30)
Snow(I, 0) = Int(Rnd
*
)
OldX = 0: OldY = 0
-
-
-
-
-
-
-
-
-
上一篇:大肠杆菌重组人干扰素α-2b的发酵
下一篇:结构主义景观-丹凯利