我在这里学编程关于我们 共44页[1 2 3 4 5 6 7 >»<... 最后一页]

第23  屏幕保护

教学目标:

  • 进一步学会使用Timer控件和Shape控件

  • 进一步学会使用Timer控件的EnabledInterval属性

  • 进一步学会使用Shape控件的ShapeBackStyleBorderColorTopLeftHeightWidth属性

  设计一个屏幕保护程序要求:程序运行时,在窗体的不同位置上随机产生不同大小、不同颜色的圆圈;同时,一行文字从窗体左边开始向右移动,当文字到达窗体右边界时又让它回到左边界,重复刚才的运动;最后,单击窗体,结束程序运行。

    窗体的WindowState属性是用于设置一个窗体运行时的大小状态。有3个属性值供选择:默认值是“0-Normai”,此时的窗体大小由WidthHeight等属性决定;“1-Minminzed"属性值使窗体最小化成图标;“2-Maximized"属性值使窗体以全屏方式出现。

    在程序中使用WindowState属性的格式如下:

    Obiect.WindowsState[=Value]

    若是Obiect对象,Value的值可以是012(012的含义同上)。如果不选Value的值,则为取默认值。

一、设计“屏幕保护“程序界面

根据题目要求,程序在窗体上放置1Label2Timer控件。

二、设置对象属性

说明:

Timer1Timer2Interval的属性值设置为100,表示1/10秒执行一次。

Label1BackStyle的属性值为0-TransparerntLaberl1背景色透明(可以看到窗体颜色),BackColor(字体颜色)属性值为&H008080FF

Fo\rm1WindowsState属性值设置为Maximial,即全屏幕方式显示,BackColor设置为黑色。

    如果一个窗体中的不同过程要使用同一个变量,就需要在该窗体内的过程外面定义一个变量,它在整个窗体中有效,即其作用域为整个窗体,本窗体内的所有过程都能访问;这就是窗体的变量。

  声明这一级变量要先进入程序代码窗口,单击左侧下拉列表框右端的下三角按钮并选择“通用”按钮,再单击右侧下拉列表框右端的下三角按钮选择“声明”。

数组:用一个名字来代表的按一定顺序排列的一组具有相同属性、类型的数据或变量称为数组。数组中的每个数据或变量称为数组元素。每个数组元素都处于数组中的某一确定位置,这个位置就称为该元素的下标。下标可以是常数、已赋值的变量和表达式等。

  数组变量的格式:数组名(下标)

其中,数组名的规定与简单变量名相同。例如;a(1)a(2)a$(1)h(4)h(5)

数组说明语句(在使用数组前,一般需要对数组进行定义(说明),即说明数组的大小和名称等)的格式:

    Dim数组名(最大下标)[,数组名(最大下标),…] [ As数据类型]

    其中,方括号中内容为选项。

  例如:dima(10)

  该语句定义了一个名为A的数组一维数组。它的最小下标是0,最大下标是10,共有11个元素:a(0)a(1),…,a(10)

  一个数组说明语句中,可以同时定义几个数组。

  例如:Dima(10)b(10)c(10)

  该语句定义了数组名为abc3个数组一维数组。

  三、编写程序代码

  程序先定义了3个窗体级的数组变量:Dim x(10)y(10)r(10)

    Timer1控制程序运行时,在窗体的不同位置上随机产生不同大小、不同颜色的圆。

 Dim x(10), y(10), r(10)

Private Sub Form_Click()

    End

End Sub

Private Sub Timer1_Timer()

    Static p As Integer               ‘定义变量I为整数型静态变量

    Randomize Timer                ‘随机函数播种语句

    If p = 10 Then p = 0

    p = p + 1

    Circle (x(p), y(p)), r(p), QBColor(0)  ‘用黑色画圆

    x(p) = Fix(Rnd * Form1.Width)      ‘随机产生圆心的X坐标

    y(p) = Fix(Rnd * Form1.Height)      ‘随机产生圆心的Y坐标

    r(p) = Fix(Rnd * 500) + 200          ‘随机产生圆心的半径

    Circle (x(p), y(p)), r(p), RGB(Rnd * 256, Rnd * 256, Rnd * 256)

End Sub

其中,Circle(x(p)y(p))r(p)QBColor(0)语句是为了使用背景色涂掉一些圆。

Private Sub Timer2_Timer()

    Label1.Left = Label1.Left + 100

    If Label1.Left > Form1.Width Then Label1.Left = 0

End Sub

  Timer2控制程序运行时,文字在窗体上的运动。

  程序是让Labell从左往右移动,就是改变:Label1Left属性:使其逐步增加。每1/10秒执行一次此段程序时,让LabellLeft属性加100(VB定义的屏幕单位);当它走出Form时,再把LabellLeft属性设置为0,也就是让它再从左边出来。

  单击窗体,程序结束。

  四、调试运行程序

  在调试运行程序之前,建议先以“屏幕保护“为文件名存盘.

  程序可能存在的问题是:

  (1) LabeTimer2interval是否为非0值,如果是0,则Timer1先效。

  (2)Timer2的程序代码里是否有Labell..Left+100的语句。

五、练一练

设计如图程序。要求:有计算机随机产生81000以内的正整数,并由计算机从大到小排序。

以“排序”为文件名存盘。

程序代码如下:
Dim a(10)                   ‘
定义a数组为窗体变量,且最大下标为10

Private Sub Command1_Click()

    Randomize               ‘随机播种语句

    For i = 1 To 8         ‘随机产生81000之内的正整数,赋予数组a的各个变量

    a(i) = Fix(Rnd * 1000) + 1

    Next i

    Label2.Caption = a(1)      ‘将变量a(I)的值显示在Label2Caption

    Label3.Caption = a(2)

    Label4.Caption = a(3)

    Label5.Caption = a(4)

    Label6.Caption = a(5)

    Label7.Caption = a(6)

    Label8.Caption = a(7)

    Label9.Caption = a(8)

    Command1.Enabled = False

    Command2.Enabled = True

End Sub

 

Private Sub Command2_Click()

    For i = 1 To 7

    m = i

    For j = i + 1 To 8

    If a(m) < a(j) Then m = j

    Next j

    x = a(i): a(i) = a(m): a(m) = x

    Next i

   Label11.Caption = a(1)    ‘将变量a(I)的值(最大数)显示在Label2Caption

    Label12.Caption = a(2)

    Label13.Caption = a(3)

    Label14.Caption = a(4)

    Label15.Caption = a(5)

    Label16.Caption = a(6)

    Label17.Caption = a(7)

    Label18.Caption = a(8)

    Command1.Enabled = False

    Command2.Enabled = False

End Sub

程序中使用a数组采存放8个随机数,先设定a(1)中存放最大数,a(2)中存放次大;…,a(8)存放最小数。程序中使用双重循环对8个随机数进行排序,设定变量a(m)存放内层循环执行一遍后得到最大数。基本思路如下:

    当外层循环变量i的值取1时,假设,a(1)中放a数组中的最大的数,也就是将循环变量i的值赋给变量m(即程序中的m=i语句)。进入内层循环,内层循环变量i的值由i+1变化到8。内层循环体是将a(m)的值与a((即与a(i+1)a(8))中的值逐一进行比较,若遇到a(m)中的值小于某个a((j)中的值,则将这个数组变量的下标赋给变量m(即程序中的If a(m)<a(j) Then m=j语句),这时a(m)中的值已经换成这个大的数,然后用a(m)中的值继续与余下的a(j)进行比较,若再遇到小于a(j)中的值情况则重复上面的过程,直至比较完毕,退出内循环。此时a(m)中存放着第I次循环得到的A数组中第I个最大的数。

Private Sub Command3_Click()

    Label2.Caption = ""    ‘清空Label2

    Label3.Caption = ""

    Label4.Caption = ""

    Label5.Caption = ""

    Label6.Caption = ""

    Label7.Caption = ""

    Label8.Caption = ""

    Label9.Caption = ""

    Label11.Caption = ""

    Label12.Caption = ""

    Label13.Caption = ""

    Label14.Caption = ""

    Label15.Caption = ""

    Label16.Caption = ""

    Label17.Caption = ""

    Label18.Caption = ""

    Command1.Enabled = True

    Command2.Enabled = False

End Sub

我在这里学编程关于我们 共44页[1 2 3 4 5 6 7 >»<... 最后一页]