1、因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可了。打字游戏程序设计课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。通过具体的问题分析、设计、调试、运行程序。在实际问题中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。就这个程序具体而言:调用宏,显示背景和主界面,通过选择不同的选项,可以进入不同的界面;采用BIOS功能的中断,可以在任何时候退出当前所在的界面并
2、通过选择进入其他的界面。这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。第1章 系统分析 要求完成一个打字练习程序,即在规定的时间内按下屏幕上显示的字母,字母就消失,否则字母一直移动到屏幕底端。流程图 本次程序开始是一个主界面,在主界面上包括四个选项,第一个选项是进入打字子程序,第二个是选择进入等级设置子程序,第三个是进入帮助子程序,第四个是退出主界面,以下是程序的主流程图:开始 输入密码 主界面 速度选择 游戏界面 ESC返回主界面 Space 暂停 E 退出 第2章 系统总体设计 2.1 打字程序包括以下五个子程序:(1)主界面的显示模块;(2)打字练习模块;(3)设置
3、速度模块;(4)密码模块;(5)清屏模块。其中的打字练习模块又分为以下三个子程序:(a)游戏界面模 (b)功能模块 2.2 算法的整体设计思路 此程序涉及到宏和I/O中断的调用,通过对宏的定义和使用以及对I/O中断的使用,实现程序的相应功能。利用宏,实现各个界面的显示,采用中断,实现各个子程序的相互转换。其中最主要的是打字程序:运行程序,打字界面中出现由26个字母组成的乱,否序行,这时其中会有任一字母落下,在键盘上输入该字母,字母消失,分数值加1则字母一直移动到屏幕底端,然后消失,生命值减1。当生命值减为零且未在字母下落到屏幕底端之前输入该下落字母时,打字练习结束,显示结束界面。2.3 程序的
4、主要特点 本程序最大的特点就是具有较好的人机交互功能。在主界面中,用户可以选择不同的游戏等级,他们能够根据自己的实际打字速度,选择相匹配的等级进行打字练习。如果用户对我们设计的程序有不明白的地方,可以选择帮助进行求解,并能与我们联系,讨论程序的不足,寻求改进,或者分享程序中的精妙之处。此外,根据用户的打字情况我们会给予他们相应的分数和生命数。第3章 详细设计 3. 1主界面伪代码 系统的主界面主要是显示欢迎语,制作人,时间,速度选择等主界面信息。方便用户了解信息并进行选择操作。用户密码为“111111”。在用户输入正确的密码之后即可进入游戏进入下一选择菜单。STR1 DB Welcome to
5、 play chars,0AH,0DH, $STR2 DB Made by limingming jiangsongli $STR3 DB 2012/6/21 STR4 DB Please choose speedingSTR5 DB Please press Enter to cintinue. STRA DB STRB DB score: , iSTRC DB You choose:STRD DB hqfuvodepfdjygnhtrwgaerjrklubgsnyrsbntrsbngtrdjykuahtrgregfytjgfjytjktru, STRE DB RIGHT:MES5 DB P
6、LEASE ENTER YOUR PASSWORD :$PASSWORD DB 111111PASSWORD1 DB 6 DUP(?) 3. 2等级界面伪代码 在主界面中选择2,进入等级界面的设置,其中有6个等级,代表不同的难易程度。用户可选则其中的任意一个级别,按Enter键表示确定并返回主界面,若用户输入的错误的等级,则一直等待,直到输入了正确的等级。以下是等级界面的伪代码:STR7 DB speed 1STR8 DB speed 2STR9 DB speed 3STR0 DB Select the number among 1-33.3游戏界面伪代码 此伪代码显示的是进入打字界面的提示信
7、息:ST1 DB PauseST2 DB E : QuitST8 DB Esc: BackST3 DB Function MeunST4 DB please input. ST5 DB SPACE: ContinueST6 DB Thank You !ST10 DB ;ST9 DB VREY GOOD ! 3. 4清屏子程序设计 BIOS功能调用中的INT 10H功能6能使屏幕内容上卷指定的行,这个功能需要设置4个参数,分别代表清屏区域的左上角的坐标和右下角的坐标。如果屏幕的其实行列不为(0,0)结束的行列不为(24,79),则屏幕上只有指定的一部分具有上卷的功能,这个屏幕伤的部分区域叫做窗口
8、(window)像这样的窗口可以在屏幕上设置多个,这些窗口都可以独立使用。如果上卷超过指定窗口的顶部,这些行的内容就消失,出现在窗口底部的新行被填为空格,其属性用BH寄存器决定。如果AL=0,则实现完成的工作是清楚屏幕的功能,它将按AL中的BH字符使指定的窗口为空白。以下是清除全屏幕的子程序:CLEAR PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,6 MOV AL,0 ;blank screen MOV BH,7 MOV CH,0 ;左上角行号 MOV CL,0 ;左上角列号 MOV DH,24 ;右下角行号 MOV DL,79 ;右下角列
9、号 INT 10H ;屏幕初始化或上卷 MOV DX,0 ;行列号都为0 MOV AH,2 置光标位置 ; DIS5 25D,10100100B ;置背景色 背景 蓝 前景红DIS5 25D,11110100B ;置背景色 背景白色 前景红DIS3 RET CLEAR ENDP 3.5密码程序设计 DIS1 MES5,5,15 LEA BX,PASSWORD1 MOV CX,6 INPUT:MOV AH,07H INT 21H MOV BX,AL INC BX MOV AH,02H MOV DL,*LOOP INPUT CONTIUN:CMP AL,0DH JNE CONTIUN MOV CX
10、,6 LEA SI,PASSWORD LEA DI,PASSWORD1 CHECK:MOV AL,SI CMP AL,DI JNE START INC SI INC DI LOOP CHECK 3.6宏代码 3.6.1在指定位置显示彩色字符串 ;=DIS1 MACRO STRING1,Y,M MOV BH,0 ;页号 MOV DH,Y ;行标 MOV DL,M ;列标 置光标位置 MOV AH,09H MOV DX,SEG STRING1 MOV DS,DX MOV DX,OFFSET STRING1 INT 21H ;显示字符串 ENDM =3.6.2显示背景 =DIS5 MACRO S1,
11、S2 DIS2 blank screenMOV AL,s1 ;上卷25行MOV BH,s2 ;绿色背景 红色前景MOV CH,0 MOV CL,0 MOV DH,0 MOV DL,80 屏幕初始化或上卷=3.6.3画横向边框的宏 DIS6 MACRO Z1,Z2,Z3,Z4 LOCAL C5 ; LOCAL为重复定义的定义符MOV CX,Z1 ;循环次数 MOV DL,Z2 ;列 C5: MOV AH,2 MOV BH,Z3 ;MOV DH,Z4 ;行 MOV DL,2AH 输出* POP DX INC DL ;列 + LOOP C5 3.6.4画竖边框的宏 =DIS7 MACRO Q1,Q2,Q3,Q4 LOCAL F1 ;MOV CX,Q4 MOV DH,Q1 ;F1:MOV BH,Q2 MOV DL,Q3 ;INC DH LOOP F1 =3.7功能的进一步完善 3.7.1完善代码一 修改界面背景属性 DIS5 25D,10100100B ;DIS5 25D,01001111B ;置背景色 背景 红 前景白闪背背背亮前前前烁 景 景 景 度 景 景 景 显示背景 =
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1