课程设计打字游戏Word格式文档下载.docx
- 文档编号:16337035
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:30
- 大小:21.98KB
课程设计打字游戏Word格式文档下载.docx
《课程设计打字游戏Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《课程设计打字游戏Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
最后,感谢郑利平老师一学期来指导和帮助,也感谢我们班的桑磊同学在课程设计中给我解答疑问!
八、源程序如下:
;
=======================================================================
打字游戏程序
init_gamemacroop1,op2,op3,op4,op5,op6;
循环输出,用于初始化界面
movcx,0
movdh,op1;
起行
movdl,op2;
起列
op6:
movah,02h
movbh,00h
int10h
pushcx
movah,0ah
moval,op3;
要显示的字符
movcx,01h
popcx
inccx
incop4;
指出循环输出的是行还是列
cmpcx,op5;
循环次数
jneop6
endm
=======================================================
cleanmacroop1,op2,op3,op4;
用于清屏,分别是起止的行和列
movah,6
movbh,00010111b
moval,0
movch,op1
movcl,op2
movdh,op3
movdl,op4
movah,2
movbh,0
movdh,0
movdl,0
======================================================
menumacroop1,op2,op3;
用于屏幕上文字的输出
movdh,op1
movdl,op2
leadx,op3
movah,9
int21h
datasegment
fgfdb'
===============================================$'
;
分隔符
menu1db'
1.startgame$'
menu2db'
2.selectlevel$'
;
主界面上显示的内容
menu3db'
3.exit$'
menu4db'
selectnumberofmenu:
$'
menu5db'
author:
wangfeng$'
menu6db'
NO.:
20042390$'
menu7db'
1.veryeasy$'
menu8db'
2.normal$'
;
难度的选择
menu9db'
3.hard$'
menu10db'
4.return$'
menu11db'
data:
2006.12.24$'
meg1db'
pressanykeytostartthegame...$'
游戏开始之前的提示
meg2db'
pressesckeyreturnmainmenu$'
meg3db'
pressspacekeyforpause$'
meg4db'
whenthegamewaspaused,pressesetoquit!
meg5db'
life:
生命数
meg6db'
score:
分数
meg7db'
hittheletternum:
meg8db'
missletternum:
meg9db'
theshootingis:
madb0
mbdb0
sped1dw0
speeddw3000d;
游戏的速度,也决定了游戏的难度
lettersdb78dup(0);
上方显示的字母
lifedb39h
positiondb1;
上方字母的位置用于控制落下的字母
time_mdb0
time_sdb0
xmuldb13
ndb26
score1db0
leveldb1
hangdb0
linedb0
fen1db0
fen2db0
fen3db0
fen4db0
fen5db0
stringdb'
100%$'
errordb0
dataends
============================================
codesegment
assumecs:
code,ds:
data;
ss:
stack
start:
movax,data
movds,ax
这里是几个数据的初始化
movposition,1
movspeed,3000
movlevel,1
movsped1,50000
moverror,0
movscore1,0
jiemian:
movah,01h
movcx,00h
orch,00010000b
int10h
置光标类型,用于隐藏光标
clean0,0,24,79
下面这些是游戏的初始化
init_game0,0,08h,dl,80,sk1
init_game24,0,08h,dl,80,sk2
init_game0,0,08h,dh,25,sk3
init_game0,79,08h,dh,25,sk4
menu5,15,fgf
menu7,25,menu1
界面显示
menu9,25,menu2
menu11,25,menu3
menu13,15,fgf
menu15,25,menu4
menu17,55,menu5
menu19,55,menu6
menu21,55,menu11
movdh,15
movdl,47
把光标放在合适的位置
moval,'
'
int10h
在选择时屏蔽其他的按键,使之不出现在屏幕上
movah,1
input:
cmpal,'
1'
jebegin
当输入字符是1时,
跳转到begin开始游戏
2'
jeto_speed_c
当输入字符是2时,跳转,
由于不能直接跳转到
speed_c故用了个转移
3'
jeto_exit
cmpal,1bh
jeto_exit_d
to_otherkey:
jmpotherkey
to_exit:
movah,1
int21h
cmpal,0dh
jneto_otherkey
jmpexit
to_speed_c:
jmpspeed_c
to_exit_d:
===================================
begin:
clean1,1,23,78
play_message:
显示有关游戏提示
menu10,18,meg1
menu12,18,meg2
menu14,18,meg3
menu16,18,meg4
movah,07h
按任意键继续,
不把输入的字符显示在屏幕上
jeto_jm
jmpplay
to_jm:
jmpjiemian
play:
clean1,1,23,78
movlife,39h
movdh,1
movdl,1
movbx,0
leasi,letters
output_letters:
显示上方字母
movah,2ch
moval,dl
movah,0
divn
movdl,ah
adddl,61h
mov[si],dl
movcx,14987
callwaitf
incsi
incbx
cmpbx,78
jenext
jmpoutput_letters
next:
menu23,70,meg5
menu23,30,meg6
生命数的相关显示
pushdx
movdh,23
movdl,76
moval,life
movcx,1
movdl,43
moval,score1
moval,30h
popdx
jmpgame
sub_p:
subposition,78
cmpposition,0
jnenext3
incposition
next3:
jmpgame_next
game:
leasi,letters
movah,2ch
伪随机算法,方法是读取1/100秒,
moval,dl
movposition,al
jnenext2
next2:
cmpposition,78
和78比较,大于则减去78
jasub_p
game_next:
addsi,wordptrposition
decsi
movdl,position
position就代表的是列
movbh,0
置光标位置
movbl,12h
temp:
nextrow:
yanchi:
延迟
yanchi1:
addcx,1
cmpcx,sped1
jneyanchi1
movah,06h
movdl,0ffh
jzpass
不输入则跳转pass
cmpal,"
"
jepause1;
空格,暂停
jmpskip1
pause1:
jmppause
skip1:
cmpal,1bh
jedisplay
esc,返回到开始时的界面
cmpal,[si]
jeto_disappear
正确输入,字母消失
pass:
cmpcx,speed
speed,字母下落速度
jeprint1
jmpyanchi
print1:
jmpprint
to_disappear:
movah,3
movhang,dh
movline,dl
movbl,1ch
movdh,hang
movdl,line
movdl,[si]
calldelay0
jmpdisappear
跳到记分段
display:
calldisp
int21
jeto_start1
to_start1:
jmpstart
to_exit1:
pause:
暂停时输入大写的q,则退出游戏
jedisplay
再次按空格,游戏继续
jnepause
jmppass
print:
在字母处输入空格填
moval,"
movcx,1
incdh
光标下移一行
movah,09h
moval,[si]
输出字母
cmpcx,21
如果落到第21行还没有消失,
则life减一,字母消失
jeto_print_next
jmpnextrow
如果没到21行,继续下落
to_print_next:
pushax
moval,error
incal
moverror,al
popax
callsound1
jmpprint_next
change_0:
jmpprint_next
disappear:
正确输入后字母消失
incscore1
此处代码是为了同步输出得分
和当前life的剩余值
pushax
pushbx
movbl,10
divbl
movfen1,al
movfen2,ah
popbx
popax
moval,fen1
addal,30h
movdl,44
moval,fen2
movdh,hang
输入正确后,
将该字符在原位置高亮显示
movbl,17h
jmphit
to_over:
print_next:
life减为0时,游戏结束
sublife,1
cmplife,30h
jeto_over
更新life
hit:
重新把光标移到顶端
movah,02h
movdl,position
addah,61h
mov[si],ah
重新在空格处设置一个字母
speed_c:
速度选择
jneotherkey
jmpspeed_jm
otherkey:
隐藏非法的字符
pushax
movdl,48
movdx,ax
jmpinput
speed_jm:
难度选择的界面
menu6,15,fgf
menu8,30,menu7
menu10,30,menu8
menu12,30,menu9
menu14,30,menu10
menu16,15,fgf
menu18,25,menu4
choose_speed:
movdh,18
choose_next:
jespeed1_1
jmpspe2
speed1_1:
jmpspeed1
spe2:
jespeed2_2
jmpspe3
speed2_2:
jmpspeed2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 打字 游戏