好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

微机课设-指法练习程序.doc

12页
  • 卖家[上传人]:ji****n
  • 文档编号:48149712
  • 上传时间:2018-07-10
  • 文档格式:DOC
  • 文档大小:80KB
  • / 12 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 指法练习程序指法练习程序1 1 设计任务及要求的分析设计任务及要求的分析这次课程设计的任务是写一个程序,运行可执行程序后,从屏幕上方随机落下可显示字符,字符的出现位置亦是随机的;在字符下落的过程中可输入任意键,若键入与下落字符相匹配的键,则该字符消失并发出蜂鸣声,同时计分;并且在程序运行过程中,若按 ESC 键,则结束练习并显示命中数,若按 Q 键则退出根据题目要求可以看到有以下几部分来实现打字练习:1.随机显示字母,字母出现的位置随机2.字母自动落下3.从键盘输入的字母与落下字母相同则该字母消失,同时下一个字母自动接着落下,并且扬声器发声4 程序开始统计得分和总字符数 5.按下“Ese”键则程序显示得分和总字符数返6.在主界面按“Q”则程序退出打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的对于以上及部分,最主要的部分就是中间的四个部分,这是打字练习的重点,需要详细设计其所需要的功能2 2 方案比较及认证说明方案比较及认证说明对于随机显示字母和字母出现的随机位置,有两种不同的产生方式方式 1:可以将字母随机的排在一个字符串中,然后通过查表的方式来显示不同的字母,字母出现位置的随机也可以这样。

      方式 2:通过数学上产生随机数的算法来实现字母出现位置的随机,从而根据字母的位置来选择不同的随机字母方式 1 只需要在开始将字母随机的排在一个字符串中,然后将字母出现位置也随机的排列在内存中就行了,这种方式调用起来方便和快捷;方式 2 需要用汇编语言对随机算法进行描述,从而不断的产生随机数,较为复杂最后,综和各自的优缺点,本程序选择了方式 1 3 3 系统原理阐述系统原理阐述从设计任务及要求可以得知编写此汇编程序的基本原理,编写一个主程序和若干个子程序(初始化子程序、提示信息子程序、速度设定子程序、开始打字子程序,显示打字结果子程序)来完成设计任务所要求的功能,使程序模块化和功能化,让程序看起来简洁,明了主程序完成的功能为:首先调用初始化子程序,对系统参数进行初始化和主界面初始化,然后调用字母下降速度选择和设定子程序对字母下降速度进行设定,其次调用系统时钟子程序显示当前时间,然后调用开始游戏子程序开始打字和计分若想中断打字过程,并看自己的成绩,可按 esc 键进行游戏结束时分数显示子程序的调用,窗口会显示打字情况初始化子程序对整个程序中用到的参数进行初值设定,并显示开始界面和提示信息速度选择和设定子程序实际上是延时环节,字母下落速度越快则延时越少,反之亦然。

      系统时钟子程序是采用中断调用系统时钟并显示在打字游戏窗口,让用户可以随时知道打字所花费的时间,人机交互友好,体现人性化设计开始游戏子程序会调用字母下落子程序和随机字母和随机位置产生子程序,不断的落下字母让用户进行打字游戏,并随时显示用户的得分情况字母下落子程序通过不断的本行写空格和下一行写当前字母来实现字母的下落随机字母和随机位置产生子程序通过查表的方法来实现随机字母和随机位置的产生游戏结束时分数显示子程序会显示本次用户的打字情况本程序有多个子程序和主程序构成,主程序不断地调用子程序来进行打字游戏4 4 软件设计软件设计4.14.1 软件的设计思想软件的设计思想根据设计任务及要求,可以得到汇编语言的基本思想为编写一个主程序和若干个子程序,各子程序分别为:初始化子程序、速度设定子程序、显示时钟子程序、开始打字子程序,显示打字结果子程序,在程序运行时主程序分别调用各个子程序来完成汇编语言程序的编制和打字游戏的不断进行因为各个子程序是相互独立的,所以可以让这些子程序分别独立的完成某一特定的功能,然后再依靠主程序来调用这些不同的功能模块,这样通过增加子程序逐渐增加系统的功能,最终主程序将所有的小功能模块连接在一起,从而达到设计任务所要求的功能。

      这样,将一个大功能简化为一个个小功能,可以大大减小编写程序的难度,并且这样进行模块化设计大大增加了程序的可阅读性和移植性,在以后要用到相同的功能时可以将其移植过来,还大大简化了程序的设计,避免了重复劳动4.24.2 主程序及其功能说明主程序及其功能说明4.2.14.2.1 主程序的流程图主程序的流程图开始初始化速度选择ENTER显示当前时间是否 ESC 键开始游戏否是显示得分是否重新开 始(Y /N)结束游戏YNQ 键图 1 主程序流程图4.2.24.2.2 主程序功能说明主程序功能说明由图 1 可知主程序是程序的脉络主线,程序的运行就是围绕着主程序的执行而运行的同时也是其他子程序的接入点主模块是打字游戏的核心模块,主要通过各个键盘符来控制各个子模块之间的协调,完成打字游戏的运行子模块主要包括:初始化子模块、速度设定子模块、显示时钟子模块、开始打字子模块,显示打字结果子模块其中初始化子模块包括显示初始界面菜单,初始化程序参数,判断是否进入游戏;速度设定子模块包括速度选择子程序和速度设置子程序显示时钟子模块包括取系统时钟和显示两个子程序开始打字子模块包括显示分数子程序,当敲入字符与下落相符时扬声器发声子程序,字母下落子程序,产生新的字母和新的位置子程序,延时子程序。

      这些程序有机的组合在一起,完成整个打字游戏的运行主程序如下所示pushReg macropush axpush bxpush cxpush dxendm ;寄存器出栈popReg macropop dx pop cx pop bx pop axendm ;**设置光标宏** curse macro cury,curxpushReg mov ah,02h mov bh,00hmov dh,curymov dl,curxint 10hpopRegendm ;清屏宏定义 clear_screen macro op1,op2,op3,op4,color pushRegmov ax,0600h ;清屏程序mov bh,color mov ch,op1 mov cl,op2 mov dh,op3 mov dl,op4 int 10h curse 0,0popReg endm ;菜单显示宏定义 menu macro cury,curx,op3 ; curse cury,curxmov ah,02h mov bh,00hmov dh,curymov dl,curx int 10h ;mov ah,02hmov ah,09h lea dx,op3 int 21h endmdata segment; add your data here! ;随机的字母 letters db 'etfpzybjsyoqirfxtdaphbfdbchrrmjwzxkhuieqtwfqzuglnvmlmotogaitlbpfuhgdzwxwqiproeagndclrjyvnzcyjywdquvpmneknvkesbhlagsoxivscmskkujcxa'ch_count equ $-letters ;ch_count=130 、;随机的x坐标xpos db 73,42,44,74,76,43,24,62,76,1,2,44,59,77,23,9,13,53,50,63,36,15,0,33,12,51,18,8,6db 66,68,30,18,10,2,79,48,7,6,29,47,27,43,25,40,32,42,28,56,17,11,10,18,25,5,45,16db 37,67,61,28,20,69,70,34,74,55,33,4,57,69,12,66,53,2,47,40,72,34,35,20,27,71,1,6db 8,32,40,52,58,11,9,79,77,5,45,77,11,7,42,22,21,71,35,29,78,22,14,37,38,47,58,28db 78,49,31,22,50,63,39,61,51,56,48,76,7,10,75,62,67,38,3,61,24,60,56,54,34,8,33,50db 59,53,1,26,14,13,37,24,19,54,15,60,57,21,70,54,75,63,23,58,49,71,5,26,60,12,26db 15,68,69,43,8,75,41,6,74,65,64,3,73,78,64,32,9,51,72,55,19,66,49,21,62,46,36,29db 0,3,46,16,72,27,59,20,46,19,38,16,45,14,41,48,41,39,52,73,30,4,52,35,67,31,13,39db 30,23,31,65,55,17,70,36,65,0,4,57,64,25,44,17 x_count equ $-xpos ;x_count=239;欢迎界面 menu0 db “Welcome to play !$“ menu1 db '1.Press Enter to game!',0dh,0ah,'$' menu3 db '2.Press Esc to exit!',0dh,0ah,'$' menu40 db 'Hint: when you exit from the game ,',0dh,0ah,'$' menu41 db ' you will kown how much you get ',0dh,0ah,'$' ;版权界面copyright_msg db 'Portions Copyright 2011 zhang chong. All rights reserved.',0dh,0ah,'$' ;速度选项speed_msg1 db 'choose speed:$'speed_msg2 db '1.Press “h“--high speed$'speed_msg3 db '2.Press “l“--low speed$'speed_msg4 db '3.othes--orditional$' speed_msg5 db 'Speed is ungelivable? Press “s“ to set$';输入速度值set_msg1 db 'Please Input a num(=x) between 1 to 999$' set_msg2 db 'as x percent of the orditional speed$'set_msg3 db 'x=$'set_msg4 db '%$';时间和分数 time_msg db 'Time:$'goal_msg db 'Your score:$' ;结束界面显示score_msg1 db 'Congratulation! There are total $'score_msg2 db 'chars.$'score_msg3 db 'You have hit $'score_msg4 db 'And you have tapped keyboard for $'score_msg5 db 'times.$' score_msg6 db'The hit rate is:$'score_msg7 db'%';是否重新开始提示restart_msg db 'Do you want to continue? (y/n):$'char db 0 ;字母ch_index dw 0 ;字母的索引x_index dw 0 ;位置的索引blife db 0 ;字母是否还在letter_y db 1 ;字母y坐标letter_x db 0 ;字母x坐标ispeed db 1 ;速度选择,0慢速,1普通,2快速score dw 0 ;得分即击中次数total dw 0 ;总共字母数nhit dw 0 ;击键次数second db 0ffh ;时间的当前秒数numchar db 4,?,4 dup(0) ;输入数。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.