(共35张PPT)
第十三课
控件数组与Timer控件“开心水果机”
问题与任务:
小明在网上玩过一个“开水果机”的游戏,于是,他想用VB编一个类似的程序。
游戏规则:点击“开始”,从指定的水果图片中随机抽取3张水果图片(可重复)并放入3个图片框中,直至按下“停止”按钮,如果3张图片都相同则表示中奖。运行效果如“图13-1‘开心水果机’效果图”所示。
一、“开心水果机”原理分析
通过观察“开心水果机”程序界面(图13-2)并结合游戏规则,小明发现水果机的秘密:每次点击开始”按钮后,水果机会自动从指定的水果图片中任意抽取3张可重复的水果图片,并放入3个图片框中,直至按下“停止”按钮为止。中奖的判断依据是3个图片框中的图片是同一图片。
小明从该程序的流程图(图13-3)发现,要编写本程序,除了前面所学到的VB知识外,还必须要知道怎样多次、随机抽取图片。
二、Rnd和Fix函数
要实现随机抽取图片,就必须要生成随机数。那么,如何生成一个随机数呢?
试一试
(1)新建工程。请依照图13-4(a)新建一个工程,添加Text控件和两个Command控件,依照图13-4(b)所示输入代码,并注意更改控件的name等属性。
(2)运行程序。单击“例1”按钮6次,将控件Text的数按要求填写在表13-1的第二列中。关闭后重新运行程序,再次单击“例1”按钮6次,将产生数按要求填写在表13-1的第三列中,观察两列数的变化规律。
记录次数
第一次产生数据
第二次产生数据
(关闭后重新运行)
第三次产生数据
(加入
Randomize后)
1
2
3
4
5
6
表13-1随机函数
(3)添加代码。按图13-5所示在程序中添加代码,将程序执行后的结果记录在第四列中,并观察数的变化规律。
图13-5加载
Randomize函数通过观察我们发现,随机函数Rnd的作用是返回一个大于或等于0,但小于1的随机小数。其语法格式为
Rnd
而
Randomize函数的作用是初始化随机生成器,保证每次运行程序得到的随机数序列不同。其语法格式为
Randomize
一般情况下,对象的编号都是整数。为了将小数变为整数,我们还需要用到取整函数Fix,它的作用是返回给定数的整数部分。其语法格式为
Fix
(number)
例如,Fix(3.8)和Fix(3.1)的返回值都是3
?想一想
如何利用Rnd和Fix函数产生一个0~3的随机整数?
三、控件数组
试一试
结合图13-2的程序界面设计图,说说下列代码的作用是什么。
Private
Sub
Commandstrt
Click(
)
x=
Fix(Rnd
3)
If
x=
0
Then
Imagelst
Picture
=Image1
Picture
If
x
=1
Then
Imagelst
Picture
=
Image2
Picture
If
x=
2
Then
Imagelst
Picture
Image3
Picture
If
x=
3
Then
Imagelst
Picture
Image4
Picture
End
Sub
在编写程序时,我们常常需要使用一批同一类型的控件对象,如本例中的4张图片。如果采用新建的方法一个个产生这些控件对象,就会产生如Image1、
Image2、
Image3、
Image4这样一些零散对象。对这些对象编写代码非常烦琐且不方便,无法批量使用。
1.创建控件数组
控件数组的建立可以通过复制、粘贴的方式,具体操作步骤如下(图13-6)
(1)在窗体上添加一个
Image控件,并命名为“
ImageBak"。
(2)选择该控件,通过“复制”“粘贴”创建控件数组
Imagebak。最初新建的那个控件名称为“
Image
Bak(0)”,粘贴得到的控件名称为“
Image
Bak(1)”。
(3)重复步骤(2),得到下一个控件数组元素。
2.控件数组
控件数组就是一组控件对象,如
ImageBak(0)、
ImageBak(1)、
Image
Bak(2)、
ImageBak(3),其中每个对象均被称为控件数组的一个元素。控件数组有以下特点。
(1)控件数组中的元素具有相同的对象名,如上面的4个控件对象都叫
ImageBak。
(2)控件数组中的元素以索引号(
Index属性)来区别,就像对同一类产品进行编号一样。
(3)控件数组中的元素的索引号默认从0开始。
(4)控件数组中的元素共享事件过程,即可以在同一事件过程中方便地对控件数组中所有的元素进行统一处理。
?想一想
如何通过随机数和素引号从控件数组中选择一个对应编号的图片?
讨
论
结合本节例子,说说在什么情况下适合使用控件数组。
四、
Timer控件
Timer控件的作用是有规律地以一定的时间间隔激发
Timer事件,从而每隔一段时间执行一次Tmer事件下的代码。
Timer控件有两个重要的属性:
Interval和
Enabled。
Interval属性表示两次
Ttimer事件的时间间隔,以毫秒为单位。如希望每秒执行一次
imer事件,则将
Intervall属性值设为1000。
Interval属性值越小,表示时间间隔越短,变化的频率越快,但当
Interval属性值为0时,表示Timer控件无效。
Enabled属性只有两个值:True和
False,用来决定
Timer控件是否有效。
试一试
在刚オ的窗体中添加一个
Timer控件,将
Interval属性值设为500,再将前面随机抽取的图片代码移动到
Timer事件中,观察执行程序后的效果有什么变化。
五、“开心水果机”的程序设计
结合游戏规则和流程图,我们可以将游戏的关键“自动抽取图片功能”交给
Timer控件,游戏的开始即
Timer控件的激活由“开始”按钮来控制“停止”按钮不仅用于停止游戏,还用于游戏结果的判断。
程序代码如图13-7所示。
?想一想
1.程序中的变量a,b,c都是通过表达式Fix(Rnd
4)产生的,它们的值是否一样呢?我们可通过调试功能中的“变量监视”,观察它们的值,验证自己的答案。
2.“三个数相等”,在数学中可用表达式“a-b=c”来表示,那么在VB中又是如何表达的呢?
思考与练习
根据提示,将“下落的小方块”(“图13-8下落的小方块”)程序补充完整。
程序要求:每按下键盘一次,屏幕中的黑色格子将向下移动一格,直到最后一行。
Dim
i
As
Integer
i代表行数
Private
Sub
Form_Load(
)
I=1
End
Sub
Private
Sub
Form_Key
Down(Key
Code
As
Integer,
Shift
As
Integer)
If
i<=_________Then
Shape1(________
10+4).
Fillstyle=1
Shapel(i
10+4).
Fillstyle=__________________
I=___________
End
If
End
Sub
提示
1.屏幕上的格子使用控件数组
Shape,其中第一行
Shape(0)~
Shape(9),第二行
Shape(10)~
Shape(19)……
2.当前格子所在位置是第一行第5个,即
Shape(4),下移一次就到了第二行第5个,即
Shape(14)……
3.格子的移动实际上是改变
Shape控件的
Fillstyle属性:当
Fillstyle属性值为0时,
Shape控件用实线填满;当
Fillstyle属性值为1时,
Shape控件透明。
4.按下键盘触发的是
KeyDown事件。
课堂小结
这节课,我们了解了“开心水果机”原理和
Timer控件的意义,知道了
Rnd、Fix函数的格式和作用,掌握了控件数组及其创建方法。探究、体验了设计“开心水果机”的程序。
板书设计
“开心水果机”原理分析
Rnd和Fix函数
控件数组
Timer控件
“开心水果机”的程序设计
控件数组与
Timer
控件“开心水果机”第十三课
控件数组与Timer控件“开心水果机”
教学目标
(一)知识与技能
1
Rnd、Fix函数的格式和作用。
2控件数组及其创建方法。
3
Timer:控件的意义。
过程与方法
能根据程序设计的规则和规范,初步学习简单程序与算法的分析、设计,并使用VB完
成简单编程;在自主、合作编程的过程中,提高学生的逻辑思维能力、自学能力和实际操作能力。
(三)情感态度价值观
1.发展学生学习计算机程序设计的兴趣,体验程序设计与编写过程的艰辛和喜悦。
2.有将算法与程序设计知识应用于生产生活实践的意识,能够对与程序设计有关的实际生活问题做出合理的分析。
3.善于与人合作,具有团队精神。
教学重难点
1
Rnd、Fix函数的格式和作用。
2控件数组及其创建方法。
教学过程
问题与任务导入:
小明在网上玩过一个“开水果机”的游戏,于是,他想用VB编一个类似的程序。
游戏规则:点击“开始”,从指定的水果图片中随机抽取3张水果图片(可重复)并放入3个图片框中,直至按下“停止”按钮,如果3张图片都相同则表示中奖。运行效果如图13-1所示。
图13-1“开心水果机”效果图
一、“开心水果机”原理分析
通过观察“开心水果机”程序界面(图13-2)并结合游戏规则,小明发现水果机的秘密:每次点击开始”按钮后,水果机会自动从指定的水果图片中任意抽取3张可重复的水果图片,并放入3个图片框中,直至按下“停止”按钮为止。中奖的判断依据是3个图片框中的图片是同一图片。
图13-2“开心水果机”程序界面图
图13-3“开心水果机”程序的流程图
小明从该程序的流程图(图13-3)发现,要编写本程序,除了前面所学到的VB知识外,还必须要知道怎样多次、随机抽取图片。
二、Rnd和Fix函数
要实现随机抽取图片,就必须要生成随机数。那么,如何生成一个随机数呢?
试一试
(1)新建工程。请依照图13-4(a)新建一个工程,添加Text控件和两个
Command控件,依照图13-4(b)所示输入代码,并注意更改控件的name等属性。
(a)随机函数界面设计图
(b)随机函数代码窗口
(2)运行程序。单击“例1”按钮6次,将控件Text的数按要求填写在表13-1的第二列中。关闭后重新运行程序,再次单击“例1”按钮6次,将产生数按要求填写在表13-1的第三列中,观察两列数的变化规律。
表13-1随机函数
记录次数
第一次产生数据
第二次产生数据
(关闭后重新运行)
第三次产生数据
(加入
Randomize后)
1
2
3
4
5
6
(3)添加代码。按图13-5所示在程
序中添加代码,将程序执行后的结果记录在第四列中,并观察数的变化规律。
图13-5加载
Randomize函数通过观察我们发现,随机函数Rnd的作用是返回一个大于或等于0,但小于1的随机小数。其语法格式为
Rnd
而
Randomize函数的作用是初始化随机生成器,保证每次运行程序得到的随机数序列不同。其语法格式为
Randomize
一般情况下,对象的编号都是整数。为了将小数变为整数,我们还需要用到取整函数Fix,它的作用是返回给定数的整数部分。其语法格式为
Fix
(number)
例如,Fix(3.8)和Fix(3.1)的返回值都是3
?想一想
如何利用Rnd和Fix函数产生一个0~3的随机整数?
三、控件数组
试一试
结合图13-2的程序界面设计图,说说下列代码的作用是什么。
Private
Sub
Commandstrt
Click()
x=
Fix(Rnd
3)
If
x=
0
Then
Imagelst
Picture
=Image1
Picture
If
x
=1
Then
Imagelst
Picture
=
Image2
Picture
If
x=
2
Then
Imagelst
Picture
Image3
Picture
If
x=
3
Then
Imagelst
Picture
Image4
Picture
End
Sub
在编写程序时,我们常常需要使用一批同一类型的控件对象,如本例中的4张图片。如果采用新建的方法一个个产生这些控件对象,就会产生如Image1、
Image2、
Image3、
Image4这样一些零散对象。对这些对象编写代码非常烦琐且不方便,无法批量使用。
1.创建控件数组
控件数组的建立可以通过复制、粘贴的方式,具体操作步骤如下(图13-6)
(1)在窗体上添加一个
Image控件,并命名为“
ImageBak"。
(2)选择该控件,通过“复制”“粘贴”创建控件数组
Imagebak。最初新建的那个控件名称为“
Image
Bak(0)”,粘贴得到的控件名称为“
Image
Bak(1)”。
(3)重复步骤(2),得到下一个控件数组元素。
图13-6创建控件数组
2.控件数组
控件数组就是一组控件对象,如
ImageBak(0)、
ImageBak(1)、
Image
Bak(2)、
ImageBak(3),其中每个对象均被称为控件数组的一个元素。控件数组有以下特点。
(1)控件数组中的元素具有相同的对象名,如上面的4个控件对象都叫
ImageBak。
(2)控件数组中的元素以索引号(
Index属性)来区别,就像对同一类产品进行编号一样。
(3)控件数组中的元素的索引号默认从0开始。
(4)控件数组中的元素共享事件过程,即可以在同一事件过程中方便地对控件数组中所有的元素进行统一处理。
?想一想
如何通过随机数和素引号从控件数组中选择一个对应编号的图片?
讨
论
结合本节例子,说说在什么情况下适合使用控件数组。
四、
Timer控件
Timer控件的作用是有规律地以一定的时间间隔激发
Timer事件,从而每隔一段时间执行一次Tmer事件下的代码。
Timer控件有两个重要的属性:
Interval和
Enabled。
Interval属性表示两次
Ttimer事件的时间间隔,以毫秒为单位。如希望每秒执行一次
imer事件,则将
Intervall属性值设为1000。
Interval属性值越小,表示时间间隔越短,变化的频率越快,但当
Interval属性值为0时,表示Timer控件无效。
Enabled属性只有两个值:True和
False,用来决定
Timer控件是否有效。
试一试
在刚オ的窗体中添加一个
Timer控件,将
Interval属性值设为500,再将前面随机抽取的图片代码移动到
Timer事件中,观察执行程序后的效果有什么变化。
五、“开心水果机”的程序设计
结合游戏规则和流程图,我们可以将游戏的关键“自动抽取图片功能”交给
Timer控件,游戏的开始即
Timer控件的激活由“开始”按钮来控制“停止”按钮不仅用于停止游戏,还用于游戏结果的判断。
程序代码如图13-7所示。
图13-7“开心水果机”程序代码
?想一想
1.程序中的变量a,b,c都是通过表达式Fix(Rnd
4)产生的,它们的值是否一样呢?我们可通过调试功能中的“变量监视”,观察它们的值,验证自己的答案。
2.“三个数相等”,在数学中可用表达式“a-b=c”来表示,那么在VB中又是如何表达的呢?
思考与练习
根据提示,将“下落的小方块”(“图13-8下落的小方块”)程序补充完整。
程序要求:每按下键盘一次,屏幕中的黑色格子将向下移动一格,直到最后一行。
Dim
i
As
Integer
i代表行数
Private
Sub
Form_Load(
)
I=1
End
Sub
Private
Sub
Form_Key
Down(Key
Code
As
Integer,
Shift
As
Integer)
If
i<=___________
Then
Shape1(________
10+4).
Fillstyle=1
Shapel(i
10+4).
Fillstyle=__________________
I=___________
End
If
End
Sub
提示
1.屏幕上的格子使用控件数组
Shape,其中第一行
Shape(0)~
Shape(9),第二行
Shape(10)~
Shape(19)……
2.当前格子所在位置是第一行第5个,即
Shape(4),下移一次就到了第二行第5个,即
Shape(14)……
3.格子的移动实际上是改变
Shape控件的
Fillstyle属性:当
Fillstyle属性值为0时,
Shape控件用实线填满;当
Fillstyle属性值为1时,
Shape控件透明。
4.按下键盘触发的是
KeyDown事件。
课堂小结
这节课,我们了解了“开心水果机”原理和
Timer控件的意义,知道了
Rnd、Fix函数的格式和作用,掌握了控件数组及其创建方法。探究、体验了设计“开心水果机”的程序。
板书设计
“开心水果机”原理分析
Rnd和Fix函数
控件数组与
Timer控件“开心水果机”
控件数组
Timer控件
“开心水果机”的程序设计
课后反思