ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:108.59KB ,
资源ID:11889901      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11889901.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编课程设计汇本打字游戏.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

汇编课程设计汇本打字游戏.docx

1、汇编课程设计汇本打字游戏华 北 科 技 学 院课程设计说明书专 业: 网络工程 课程名称: 汇编课程设计 设计题目: 打字游戏设计 设计时间: 2011-12-05 至 2011-12-16 评 语: _评阅成绩: 评阅教师: 课程设计报告的要求1、需求分析描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。2、总体设计(程序设计组成框图、流程图)3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,过程调用关系描述等)4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施5、测试结果,用几组测试数据进行测试算法设计的正确性。6、附录。源程序清单

2、和结果:源程序要加注释。结果要包括测试数据和运行结果。汇编语言课程设计案例一、 问题述及其需求分析要求:利用汇编语言编写一个小的打字游戏容:编写程序,在打开的菜单页面中选择游戏的难度。 难度选择包括以下5个选择(1)very slow(2)slow(3)normal(4)fast(5)very fast 在编写过程中包括以下几个部分:(1) 初始化上部分的字母(2) 获得下落的字母(3) 字母下移,同时覆盖原来的字母(4) 判断是否有输入(5) 若无输入则下落到最后(6) 覆盖原来的字符(7) 重新进行循环二、总体设计主菜单流程图这个菜单部分主要是为了给不同水平的玩家选择游戏的速度,菜单上有对

3、不同难度的描述,有助于玩家的选择。在选择过后会跳出一个提示界面,提示在游戏时的一些注意事项,之后键入任意键进入游戏,开始游戏。三、详细设计游戏程序框图 此部分是进入游戏以后的设定,先初始化边框,同时将屏幕上方的字母初始化,将屏幕下方添加代表“生命”的笑脸,当笑脸全部消失,则游戏失败,退出游戏。在游戏过程中,键入ESC建,则直接退出游戏。字母下落部分流程图这个部分是游戏的核心部分。主要的想法是在某个地方出现字母,然后延迟一段时间(延迟时间由游戏速度控制),判断是否有输入字符,同时判断字符是否为空格或者正确的字符。输入的字符正确,则用空格覆盖当前的字符,同时产生下一个字母,重复上面的过程。若没有输

4、入字符,则用空格覆盖当前字符,将当前字符在下一格处显示出来,不断的重复,直到最后笑脸处,将笑脸用空格覆盖,同时产生一个新的字母。四、编码和测试主菜单部分如下图所示: 选择时效果如下图所示 在输入的字符不是15或ESC键时,不会有任何反应,当多次键入15或ESC键时,按最后一次键入的有效,选择游戏难度后,键入ENTER键开始游戏。 进入游戏后提示信息如下图所示: 这里用了一个INT 21H的中断,等待接收一个字符来继续程序。同时给出了游戏过程中的一些提示。 游戏过程如下图所示: 提示:在游戏过程中程序之识别大写字母,需要打开大写锁定进行游戏,否则不管输入正确与否,都不会有变化。 游戏失败时界面如

5、下图: 输入ENTER键继续,输入其他键没有任何变化。 失败以后的提示画面如下: 键入ENTER键则返回主菜单,键入ESC键退出程序。 退出程序的界面如下图: 5总结与体会当我拿到这次课程设计的题目选择时,有点无从下手的感觉,最后选择了这个打字游戏,因为我对游戏本来就有比较大的兴趣。当是在写程序的过程中发现了很多很多的问题,比如最开始不知道该如何设计布局,设计游戏界面。我上网找别人写好得程序,学习别人的布局方法,终于有了一点设计的思路,让我感觉有设计的想法了。后来在设计游戏的时候发现不知道该如何产生下落的字母,起初是想使用一个产生随机数的模块,大体思路是调用系统的时间,然后再把它除上26,求出

6、它的余数。但是在使用的过程中发现不知道该如何控制它为字母,在使用的时候会出现一些乱码,所以我就放弃了。后来就定义了一个无顺序的字母串,让它代替产生随机的字母,但是因为不是随机产生的,所以有一定的顺序,这是这个程序不足的地方。再之后我发现不懂得如何控制游戏的速度,我就上网搜索,看别人的程序,最后发现可以使用一个循环,占用系统的CPU时间但不做任何处理,这样就可以当做延迟使用。同时设定不同的延迟时间,来控制游戏速度。在写程序的过程中我发现了很多原来上课没有说到的中断调用,比如INT 10H,INT 0AH等等,这些我们都没有见到过,但是在写程序的过程中又需要多次使用,这给我造成了很大的困扰。我多次

7、上网查找相关的资料和相关的实例,多次试验后终于初步了解了这些中断调用的用法。 这次的课程设计让我有很大的收获,不仅编写出了一个小游戏,还让我懂得应用一些原来课上没有机会用得一些知识。但是编写的过程中还有很多的遗憾,比如无法产生随机数,或者计时出错等等问题。在以后的学习中,要更注意。附录:程序主要代码;*; 宏部分;*;宏名:INIT_GAME;功能描述:初始化游戏,设置游戏的边框等INIT_GAME MACRO OP1,OP2,OP3,OP4,OP5,OP6 MOV CX,00H MOV DH,OP1 MOV DL,OP2OP6: MOV AH,02H MOV BH,00H INT 10H P

8、USH CX MOV AH,0AH MOV AL,OP3 MOV BH,00H MOV CX,01H INT 10H POP CX INC CX INC OP4 CMP CX,OP5 JNE OP6 ENDM;功能描述:初始化屏幕;参数:(OP1,OP2)为左上角坐标;(OP3,OP4)为右下角坐标CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4 MOV AH,06H MOV AL,00H MOV BH,71H MOV CH,OP1 MOV CL,OP2 MOV DH,OP3 MOV DL,OP4 INT 10H MOV AH,02H MOV BH,00H MOV DH,0

9、0H MOV DL,00H INT 10H ENDM ;菜单宏,用于布局MENU MACRO OP1,OP2,OP3 MOV AH,02H MOV BH,00H MOV DH,OP1 MOV DL,OP2 INT 10H MOV AH,09H LEA DX,OP3 INT 21H ENDM;*; 主程序部分;*CODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV LETTER_COUNTER,00H MOV PRESENT_POSITION,1 LEA SI,POSITION_

10、FLAG MOV AH,00HMOV CX,00HINIT_POSTION_FLAG: MOV SI,AHINC SIINC CXCMP CX,78DJNE INIT_POSTION_FLAG LEA DI,LETTERS LEA SI,LETTERS_BAKMOV CX,00HINIT_LETTERS: ;循环把LETTERS_BAK给LETTERSMOV AH,SIMOV DI,AHINC SIINC DIINC CXCMP CX,78DJNE INIT_LETTERS MOV AH,00H ;循环把LIFE_FLAG赋值0 LEA SI,LIFE_FLAG MOV CX,00HINIT_

11、LIFE_FLAG: MOV SI,AH INC SI INC CX CMP CX,78D JNE INIT_LIFE_FLAG MOV CX,00H MOV AH,01H ;设置光标大小 OR CH,00010000B INT 10H CLEAR_SCREEN 00D,00D,24D,79D INIT_GAME 00D,00D,04H,DL,80D,NEXTSIGN1 ;设置屏幕的边框,光标的位置 INIT_GAME 24D,00D,04H,DL,80D,NEXTSIGN2INIT_GAME 00D,00D,04H,DH,25D,NEXTSIGN3INIT_GAME 00D,79D,04H,

12、DH,25D,NEXTSIGN4 MENU 01D,15D,MEG ;菜单信息的宏展开MENU 01H,61D,LINJIANG MENU 03D,20D,MEG1MENU 03D,60D,NOMENU 05D,15D,MEG2MENU 07D,15D,MEG3MENU 09D,15D,MEG4MENU 11D,15D,MEG5MENU 13D,15D,MEG6MENU 15D,15D,MEG7MENU 17D,15D,MEG11MENU 19D,15D,MEG9MENU 22D,15D,MEG10;*; 选择界面;*;选择菜单部分INPUT: MOV AH,02H MOV BH,00H MO

13、V DH,22D MOV DL,33D INT 10H MOV AH,0AH ;显示空字符 MOV AL, MOV BH,00H MOV CX,01H INT 10H MOV AH,01H INT 21HRETRY: CMP AL,1 ;速度选择部分 JE SPEED1 CMP AL,2 JE SPEED2 CMP AL,3 JE SPEED3 CMP AL,4 JE SPEED4 CMP AL,5 JE SPEED5 CMP AL,6 JE SPEED6 CMP AL,1BH JE TO_OVER0 JMP INPUTTO_OVER0:JMP OVER SPEED1: MOV AH,01H

14、INT 21H CMP AL,0DH ;比较是否为回车 JNE OTHERKEY MOV AX,SPEED+2 MOV SPEED,AX JMP BEGIN SPEED2: MOV AH,01H INT 21H CMP AL,0DH JNE OTHERKEY MOV AX,SPEED+4 MOV SPEED,AX JMP BEGINSPEED3: MOV AH,01H INT 21H CMP AL,0DH JNE OTHERKEY MOV AX,SPEED+6 MOV SPEED,AX JMP BEGINSPEED4: MOV AH,01H INT 21H CMP AL,0DH JNE OTH

15、ERKEY MOV AX,SPEED+8 MOV SPEED,AX JMP BEGINSPEED5: MOV AH,01H INT 21H CMP AL,0DH JNE OTHERKEY MOV AX,SPEED+10 MOV SPEED,AX JMP BEGINSPEED6: MOV AH,01H INT 21H CMP AL,0DH JNE OTHERKEY MOV AX,SPEED+12 MOV SPEED,AX JMP BEGIN OTHERKEY: ; 处理重复输入的代码段,多次输入则覆盖 PUSH AX MOV AH,02H MOV BH,00H MOV DH,22D MOV DL

16、,34D INT 10H MOV AH,0AH MOV AL, MOV BH,00H MOV CX,01H INT 10H MOV AH,02H MOV BH,00H MOV DH,22D MOV DL,33D INT 10H POP AX MOV DX,AX MOV AH,02H INT 21H JMP RETRY ;*; 字母下落的代码段部分;*MOV AH,02H MOV BH,00H MOV DH,01H INT 10H MOV CX,00HNEXTROW:PUSH CX ; 新的一行 MOV CX,00HOUT_CYCLE: ; 延迟 PUSH CX MOV CX,00HIN_CYC

17、LE: ADD CX,01H CMP CX,50000D JNE IN_CYCLE PUSH DX MOV AH,06H MOV DL,0FFH INT 21H POP DX JZ PASS ; 如果键盘缓冲区部分为空,则跳转 CMP AL,1BH ; 如果键入ESC,则返回主菜单 JE TO_START1 CMP AL, ;如果键入SPACE,则游戏暂停 JE PAUSE CMP AL,DI ;输入字母正确!跳转! JE DISAPPEAR PASS: POP CX INC CX CMP CX,SPEED JE PRINT JMP OUT_CYCLEPAUSE: PUSH DX ;暂停处理

18、MOV AH,06H MOV DL,0FFH INT 21H POP DX CMP AL, JNE PAUSE JMP PASSTO_START1: ;返回主菜单 JMP START PRINT: ;当本行没有输入字符时,用空格覆盖原来字符,同时字符下移一位 MOV AH,0AH MOV AL, MOV BH,00H MOV CX,01H INT 10H INC DH ;行号加一,下移一行 MOV AH,02H MOV BH,00H INT 10H MOV AH,0AH MOV AL,DI MOV BH,00H MOV CX,01H INT 10H POP CX INC CX CMP CX,2

19、1D JE PRINT_NEXT_LETTER ;循环结束,跳入处理空格处 JMP NEXTROW ; 下一行,重新进行判定DISAPPEAR: ; 击中字母后的相关处理 POP CX POP CX MOV AH,0AH MOV AL, MOV BH,00H MOV CX,01H INT 10H ;输入正确时用空格覆盖当前字符 ;*; 游戏失败后的相关处理 ;*FAIL: MOV AH,0AH MOV AL, MOV CX,01H INT 10H INC DH MOV AH,02H MOV BH,00H INT 10H MOV AH,0AH MOV AL,DI MOV BH,00H MOV C

20、X,01H INT 10H MOV AH,02H MOV BH,00H MOV DH,12D MOV DL,17D INT 10H PUSH DX MOV AH,09H LEA DX,FAILMEG INT 21H POP DX ADD DH,2 MOV AH,02H MOV BH,00H INT 10H MOV AH,09H LEA DX,FAILMEG0 INT 21HRE: MOV AH,07H INT 21H CMP AL,0DH JNE RE CLEAR_SCREEN 01,01,23,78 ;清屏,留下四周花边 MOV AH,02H MOV BH,00H MOV DH,11D MOV DL,20D INT 10H PUSH DX MOV AH,09H LEA DX,FAILMEG1 ;显示提示字符串 INT 21H POP DX INC DH INC DH MOV AH,02H MOV BH,00H INT 10H MOV AH,09H LEA DX,FAILMEG2 INT 21H

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2