知识点:(1)控件数组;(2)Timer定时器控件;(3)Line直线、Shape形状、Label标签控件的使用;(4)键盘事件处理;(5)随机值生成。
1.题目介绍
“记忆力测试”是一个简单的程序,它随机地显示几个字母,用户记住并重复这些字母,字母数越多表示其记忆力越好。
2.功能要求
(1)启动程序,显示如图1所示的界面。单击“开始”按钮,如图2所示,程序依次弹出3个随机生成的大写字母。半秒钟之后,字母消失,一个闪烁的光标提示用户重新输入刚才显示的字母(如图3所示)。
图1
(2)用户输入3个字母后,程序判断输入的字母是否和随机生成的字母完全相同。如果相同,程序再随机生成4个字母让用户记忆并输入;如果不相同,以图4所示的反方式将生成的字母与输入的字母进行对比,用户可以发现自己哪个字母输入错误。
图2
图3
(3)在图4所示的状态下,用户可以选择“重复本步”让程序再生成相同个数的字母重试;如果选择“从头开始”则从3个字母重新开始。
图4
(4)要求字母以突起的立体效果显示,像是写在有厚度的木板上。
(5)用户输入字母时,无论其键盘是否处于大写锁定状态,都以大写形式显示。在用户没有输入完当前要求的字母个数之前,可以通过“退格键”(Backspace)逐个删除已输入的字母。
(6)窗口上命令按钮的标题文字和有效状态应根据程序的状态而不断改变。在用户输入字母时,只有“退出”按钮可用(见图3);当输入错误时,“开始”按钮变为“重复本步”按钮(见图4)。在不同阶段,提示文字的内容也不相同。
3.难点与提示
(1)如果使用文本框控件来编写此程序,因为它可以输入字符,所以编程的工作量会大大降低,但是界面的美感和动态效果就很难实现。本程序使用标签控件显示和输入字母。将标签控件的背景颜色设置为白色、形状设为方形、字体大小设置适中,再在标签控件的下面放置一个Shape形状控件便产生了立体感。
(2)因为运行过程中字母的个数不断地变化,所以应将标签和形状控件设为控件数组,根据程序的需要增减或减少控件数组的元素个数即可。
(3)因为标签控件不支持直接编辑,所以应处理键盘的按键事件(本程序只需要处理KeyPress事件)来模拟编辑操作,如输入和删除字母。不断闪烁的光标可以使用Line直线控件模拟。
(4)字母的动态生成和插入符的闪烁(即闪烁的光标效果)需要使用Timer定时器控件实现。下载本文