打字游戏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南农业大学东方科技学院
课程设计报告
课程名称:微机原理与接口技术
设计题目:打字游戏程序设计
学生姓名:罗英杰
学号: 2
年级专业:2008级计算机科学与技术
班级: 3 班
指导老师:王兴波
学院:东方科技学院
湖南·长沙
提交日期:2009年12月
一、任务与要求
1. 开始界面的提示信息:进入游戏,退出
2. 打字游戏:字母从屏幕上方下落,若用户在字母下落过程中输入正确字母,字母消失,
输入不正确,字母继续下落
3. 空格键退出游戏
二、分析与规划
1、结构分析图,如下
2、布局分析:
首先,出现菜单主界面起到提示作用。然后进入游戏,接着完成游戏的退出。
三、实现过程
1、出现菜单主界面:
ZK db "WELCOME TO PLAY$"
no db "shejiren: Luo Yingjie 2009/12/09 $"
meg db "press Enter key to continue.......$"
meg1 db "when a letter is dropping,please hit it!$"
meg2 db "press space key to pause!$"
meg3 db "press ESC key to return main interface!$"
meg4 db "press letter 'E' to exit!$"
上面的代码菜单主界面的内容
clear_screen 00d,00d,24d,79d
Init_game 00d,00d,0ah,dl,80d,nextsign1 Init_game 24d,00d,0ah,dl,80d,nextsign2
Init_game 00d,00d,0ah,dh,25d,nextsign3
Init_game 00d,79d,0ah,dh,25d,nextsign4
menu 05d,15d,ZK ;菜单信息的宏调用
menu 07h,15d,no
menu 09d,15d,meg
menu 11d,15d,meg1
menu 13d,15d,meg2
menu 15d,15d,meg3
menu 17d,15d,meg4
clear_screen 01d,01d,23d,78d ;清屏宏调用
clear_screen 01d,01d,23d,78d
Init_game 23d,01d,01h,dl,78d,nextsign5
mov ah,02h
mov bh,00h
mov dh,01h
mov dl,01h
int 10h
mov cx,00h
lea si,letters
cmp al,1bh ;如果键入ESC,则返回主菜单
to_start1: ;返回主菜单
jmp start
上面代码是解决怎样使主界面输出的
2、游戏界面的实现:
speed dw 600d
letters db "jwmilzoeucgpravskntxhdyqfb"
db "iytpkwnxlsvxrmofzhgaebudjq"
db "nwimzoexrphysfqtvdcgljukda"
letters_bak db "jwmilzoeucgpravskntxhdyqfb" db "iytpkwnxlsvxrmofzhgaebudjq" db "nwimzoexrphysfqtvdcgljukda" letter_counter db 0
life_flag db 78 dup(0)
position_flag db 78 dup(0)
present_position db 1
以上代码是字母的排列及出现的顺序
init_postion_flag:
mov [si],ah
inc si
inc cx
cmp cx,78d
jne init_postion_flag
lea di,letters
lea si,letters_bak
mov cx,00h
init_letters:
mov ah,[si]
mov [di],ah
inc si
inc di
inc cx
cmp cx,78d
jne init_letters
mov ah,00h
lea si,life_flag
mov cx,00h
init_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
put: mov ah,02h ;设置光标位置
mov bh,00h
mov dh,22d
mov dl,33d
int 10h
mov ah,01h ;从键盘输入任意字符 int 21h
cmp al,0dh