记忆力测试_课程设计报告[1]1参考资料_第1页
记忆力测试_课程设计报告[1]1参考资料_第2页
记忆力测试_课程设计报告[1]1参考资料_第3页
记忆力测试_课程设计报告[1]1参考资料_第4页
记忆力测试_课程设计报告[1]1参考资料_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Visual Basic课程设计报所属课程名称: Visual Basic 程序设 计 课程设计题目:记忆力测试 课程设计难度 : 3 星 课程设计时间:学 号: 201114240124 姓 名:鲁亚雄0河北联合大学机械工程学院二一二年三月、程序功能(1)启动程序时显示图1所示的启动界面。单击“开始”按钮,如图2所示,程序一次弹出 3个随机生成的大写字母。半秒钟后,字母消失,一个竖线光标提示用户重新输入刚才的字母(图3)图1启动界面图2显示字母图3输入字母(2)用户输入3个字母后,程序判断输入的字母是否和随机产生的完全相同。如果相同,程序再随机生成4个字母让用户记忆输入;如果不相同,以图4所

2、示的方式将生成的字母与输入的字母进行对比,用户可以发现自己那个字母输入不正确。(3)在图4所示状态下,用户可以选择“重复本步”让程序再生成相同个数的字母重试;如果选 择“从头开始”则从 3个字母重新开始。图4输入错误时的显示内容(4)要求字母以突出的立体效果显示,像是写在有厚度的木板上。(5 )用户输入字母时,无论其键盘是否处于大写锁定状态,都以大写形式显示。在用户没有输入 完当前要求的字母个数前,可以通过“退格键”逐个删除以输入的字母。(6)窗口上命令按钮的标题文字和有效状态应根据程序的状态不断变化。在用户输入字母时,只 有“退出键”可用;当输入错误时,“开始按钮变为重复本步”按钮。在不同阶

3、段,提示文字的内容页不同。知识点:控件数组;Timer定时器控件;Line直线、Shape形状、Label标签控件的使用;键盘事件处 理;随机值生成。、课程设计的详细设计显示字母时使用随机函数产生字母。定义一个静态变量来控制直线光标的显现与消失。键盘的KeyPress事件是整个程序的主要时事件。使用静态变量来储存游戏进行的关数。用两个数组分别储存 程序显示的字母和用户输入的字母,并进行比较。用一个数组来储存成绩,当查看排名时使用比较排序法选出前三名,显示并保存到文件中。三、程序调试过程【问题1】:可以输入字母的个数超过所要求的(如第一关可以输入8个字母)【解决办法】:If k z ThenEx

4、it Do【问题2】:字母无法显示0.5秒【解决办法】:使用一个静态变量 x,当x=1时显示字母,当x=2时字母消失。其中 x变为2时, 该过程是第二次执行,时间间隔为0.5秒(由计时器的Interval属性决定)。四、更上一层楼新功能:当输入字母错误时,程序会使用红色将其突出显示;增加了成绩的储存及显示成绩排行榜 的功能。改进:每通一关就有提醒,完成整个游戏后也有提醒;退出游戏时后会提醒用户是否保存成绩。五、课程设计总结要灵活使用静态变量和控件数组。适当地使用过程能使程序代码简洁。这次的课程设计让我掌握了键盘的KeyPress事件,明白静态变量的使用一定要注意判断是否需要归零或继续使用,以及

5、计时器控件的使用一定要注意判断和使用Enable属性。在判断两个或多个变量的关系时一定要注意边界值。六、源程序代码Dim zimushow(0 To 7) As String, zimukey(0 To 7) As StringDim k As Integer, z As IntegerDim order(1 To 4) As Stringzimushow() 用于储存显示了 0.5 秒的字母, zimukey() 用于储存键入的字母k 主要用在键盘事件中,相当于 Index ,还在 cmdrestart 和 cmdstart 过程中调用 z 用于记录游戏进行的关卡数 (=z+1)order(

6、) 用于成绩保存中Private Sub cmdstart_Click()Dim index As IntegerIf cmdstart.Caption = 开始 Then 开始游戏For index = 0 To 2 lbzimu(index).Visible = True Shapeheng(index).Visible = True Shapeshu(index).Visible = TrueNextTimershow.Enabled = True cmdstart.Enabled = False cmdrestart.Enabled = False cmdpaiming.Enabled

7、 = FalseLabel2.Caption = 记住下列每个字母 ElseIf cmdstart.Caption = 重复本步 Then 重复本关游戏 For index = 0 To zlbchacuo(index).Caption = ShPheng(index).Visible = False Shpshu(index).Visible = FalseNext cmdstart.Enabled = False cmdrestart.Enabled = False cmdpaiming.Enabled = False Label3.Caption = k = 0Call changcol

8、or Timershow.Enabled = TrueEnd IfEnd SubPrivate Sub cmdrestart_Click()Dim index As Integer, i As IntegerIf cmdstart.Caption 重复本步 Then 说明游戏还没开始 ,点击无效Exit SubEnd IfCall saving cmdstart.Caption = 开始 Label3.Caption = k = 0For index = 0 To z lbzimu(index).Caption = lbchacuo(index).Caption = ShPheng(index

9、).Visible = False Shpshu(index).Visible = FalseNextFor i = 3 To zShapeheng(i).Visible = False Shapeshu(i).Visible = FalseNextz = 2cmdstart.Enabled = False cmdrestart.Enabled = False cmdpaiming.Enabled = FalseCall changcolor Timershow.Enabled = TrueEnd SubPrivate Sub cmdpaiming_Click()Dim i As Intege

10、rForm1.Hide: Form2.Showorder(4) = z + 1Call MingCiForm2.Label1.Caption = 1 & Space(8) & order(1) & Chr(13) & Chr(10) & _ 2 & Space(8) & order(2) & Chr(13) & Chr(10) & _3 & Space(8) & order(3) & Chr(13) & Chr(10)Open App.Path & save.txt For Output As #2 将保存成绩For i = 1 To 3Print #2, order(i)NextCloseE

11、nd SubPrivate Sub cmdexit_Click() 退出程序Call savingEndEnd SubPrivate Sub Form_KeyPress(KeyAscii As Integer)Dim i As Integer, p As IntegerIf (KeyAscii = 65 And KeyAscii = 97 And KeyAscii = 122) Or KeyAscii = 8 ThenElse 只有字母和退格键能用KeyAscii = 0Exit SubEnd IfIf zimushow(0) = Then 游戏未开始时不能输入字母KeyAscii = 0Ex

12、it SubEnd IfIf Timershow.Enabled = True Then 显示字母期间不能输入! !KeyAscii = 0Exit SubEnd IfDoIf KeyAscii = 8 Then 退格键If k z Then 不能超出本关的输入个数(如第一关只能输 3 个字母)Exit DoEnd If lbzimu(k).Caption = UCase(Chr(KeyAscii) zimukey(k) = UCase(Chr(KeyAscii)If k 8 Then Exit SubIf k = z + 1 Then 式子成立代表字母输入完成,开始对比答案Timerline

13、.Enabled = False Line2.Visible = FalseFor i = 0 To zIf Chr(zimushow(i) = zimukey(i) Then p = p + 1Else lbchacuo(i).ForeColor = vbRed 错误字母变成红色End IfNextIf i = p Then 输入的字母完全正确k = 0k 为静态变量 , 完成一关之后应归 0If z = 7 Then MsgBox 恭喜,您已通过全部关卡! !, 64, 完成 Exit SubElse MsgBox 恭喜您通过本关,现在进入下一关 , 64, 恭喜 z = z + 1End

14、 IfShapeheng(z).Visible = True Shapeshu(z).Visible = True Call changcolor 把颜色变回原来的颜色 Timershow.Enabled = TrueElse 输入错误时显示正确字母For k = 0 To z lbchacuo(k).Caption = Chr(zimushow(k) ShPheng(k).Visible = True Shpshu(k).Visible = TrueNextLabel2.Caption = 输入错误,多数人能记忆七个字母,回车进行当前步测试 Label3.Caption = 正确的字母序列应

15、为: cmdstart.Caption = 重复本步 cmdstart.Enabled = True cmdrestart.Enabled = True cmdpaiming.Enabled = True cmdstart.SetFocusCall lines(0)End IfEnd IfExit SubLoopEnd SubPrivate Sub Form_Load() Dim index As Integer Timershow.Enabled = FalseTimerline.Enabled = False 调节字体For index = 0 To 7lbzimu(index).Font

16、.Size = 37 lbchacuo(index).Font.Size = 37 Shapeheng(index).Visible = False Shapeshu(index).Visible = False ShPheng(index).Visible = False Shpshu(index).Visible = False NextFor index = 0 To 2 lbzimu(index).Visible = FalseNextEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer

17、) If UnloadMode = 0 Or UnloadMode = 1 ThenCall savingEnd IfCancel = 0End SubPrivate Sub Timerline_Timer() Static g As Integer g = g + 1 If g Mod 2 0 Then Line2.Visible = True ElseLine2.Visible = False End IfEnd Sub 使直线变成光标 单数时直线显现双数时直线消失Private Sub Timershow_Timer()Dim index As Integer: Static x As

18、Integer Timerline.Enabled = False Line2.Visible = Falsex = x + 1If x = 2 Then 两次 Timer 事件的间隔为 0.5s ,此时字母消失For index = 0 To zlbzimu(index).Caption = x = 0NextLabel2.Caption = 凭记忆,依次输入刚才显示的字母 index = 0Call lines(index)Timerline.Enabled = TrueLine2.Visible = TrueTimershow.Enabled = FalseExit SubEnd IfR

19、andomizeFor index = 0 To z 随机显示字母 zimushow(index) = Int(65 + Rnd * 26) lbzimu(index).Caption = Chr(zimushow(index)Next End SubPrivate Sub saving()Dim s As Bytes = MsgBox( 是否察看并保存成绩? , 33, 请问 ) If s = 1 Then Call cmdpaiming_ClickEnd SubPrivate Sub MingCi()Dim i As Integer, j As Integer, p As StringOpen App.Path & save.txt For Input As #1 i = 1Do While Not EOF(1)Input #1, order(i)LoopFor i = 1 To UBound(order) - 1 从大到小排序For j = i + 1 To UBound(order) If order(i) order(j) Thenp = order(i): order(i) = order(j): order(j) = p End IfNextNextCloseEnd SubPrivate Sub changcolor()Dim index As Integer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论