微机课程方案打字游戏.docx
- 文档编号:13325416
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:15
- 大小:42.55KB
微机课程方案打字游戏.docx
《微机课程方案打字游戏.docx》由会员分享,可在线阅读,更多相关《微机课程方案打字游戏.docx(15页珍藏版)》请在冰点文库上搜索。
微机课程方案打字游戏
。
。
窗口初始化宏定义
00000000000000000000000000000000000000000
000000000
lnit_wmacrow_op1,w_op2,w_op3,w_op4,w_op5,w_op6,w_op7
movcx,00h
movdh,w_op1
movdl,w_op2
w_op6:
movah,02h
movbh,00h
int10h
pushcx
movah,09h
moval,w_op3
movbh,00h
movbl,w_op7
movcx,01h
int10h
popcx
inccx
incw_op4
cmpcx,w_op5
jnew_op6
endm
00000000000000000000000000000000000000000
000000000
00菜单初始化宏定义
00000000000000000000000000000000000000000
000000000
menumacrom_op1,m_op2,m_op3
movah,02h
movbh,00h
movdh,m_op1
movdl,m_op2
int10h
movah,09h
leadx,m_op3
int21h
endm
00000000000000000000000000000000000000000
000000000
draw_textmacrot_op1,t_op2,t_op3movax,data
moves,ax
movbp,offsett_op3
movdh,t_op1
movdl,t_op2
movah,02h
int10h
movcx,18
moval,00h
movbh,00h
movbl,04h。
框架颜色
movah,13h
int10h
endm
00000000000000000000000000000000000000000
0000000000000
time_chmacroc_op1,c_op2
leadi,c_op1
leasi,c_op2
cld
movcx,8
repmovsb
endm
0000000000
show_timemacros_op1,s_op2,s_op3,s_op4
MOVdh,s_op1movdl,s_op2
MO\BP,0FFSET_op3
M0VCX,s_op4
MO\BX,004EH
MOVAX,1301H
INT10Hendmdatasegment
wel1db'Thisisasimpleasmwordgame!
$'
wel2db'Editedbywuhanligongdaxue@whut.dq0604$'
wel3db'Whenaletterisdropping,pleasehitit!
$'
wel4db'Pressspacetopause$'
wel5db'PressESCtoreturnbackmaininterface$'
wel6db'PressletterEtoexit!
$'
wel7db'Enteryournameandpressentertostartthisgame!
$'wel8db'Yournamehere:
$'
playerdb'Player:
'
player_nadb6dup(''>,'$'
failuredb0
letter_counterdb0
letter_countdw0
scoredb'score:
'score_showdb'$'score_numberdb0score_number1db30hscore_number2db30h
char_ptdb'char_?
'
speeddwOafffh
lettersdb"qpwoeirutylaksjdhfgzmxncbvpslwpdlemdkgw"
letters_bakdb"qpwoeirutylaksjdhfgzmxncbvpslwpdlemdkgw"letters_counterdb0
letters_countdw0
life_flagdb39dup(0>present_positiondb1
start_str
db'start:
$'
start_time
db8dup('
:
'>
now_time
db8dup(':
'
>
end_str
db'end:
$'
end_time
db8dup(':
'
>
t_time
db8dup(':
'
>
word_str
db'totalword:
$'
text_frame
db0c9h,16
dup(0cdh>,0bbh
text_frame10text_frame11text_frame12text_frame13text_frame14text_frame15
db0cch,16dup(0cdh>,0b9hdb0bah,16dup(20h>,0bahdb0bah,16dup(20h>,0bahdb0bah,16dup(20h>,0bahdb0bah,16dup(20h>,0bahdb0c8h,16dup(0cdh>,0bchdataendsstacksegmentstackdb200dup(?
>stackendscodesegment
mainprocfar
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
moves,ax
movax,0003h
int10h
movah,01h
orch,00010000b
int10h
000000000
。
。
。
。
利用宏初始化窗口边框
00000000000000000000000000000000000000000
000000000
lnit_w00d,00d,02d,dl,80d,win_x1,04h
lnit_w24d,00d,02d,dl,80d,win_x2,04h
lnit_w00d,00d,02d,dh,25d,win_y1,04h
lnit_w00d,79d,02d,dh,25d,win_y2,04hmenu08h,14h,wel1menu09h,14h,wel2menu0ah,14h,wel3menu0bh,14h,wel4menu0ch,14h,wel5menu0dh,14h,wel6menu0fh,14h,wel7menu10h,14h,wel8
00000000000000000000000000000000000000000000000000
00输入玩家名字
00000000000000000000000000000000000000000000000000
input_name:
movcx,16leasi,player_nanext_input:
movah,01hint21hcmpal,08hjzerase_namecmpal,0dhjzbegin_gamecmpal,45hjzexitmov[si],alincsiloopnext_inputjmpbegin_gamemovah,1hint21hexit:
movah,4chint21herase_name:
pushcxpushaxmovah,Oahmoval,''movbl,00hmovbh,00hmovcx,1int10hpopaxpopexjmpnext_input
00000000000000000000000000000000000000000
000000000
begin_game:
callelear_sereen
callget_time
time_ehstart_time,t_time
movletter_eounter,00h
movpresent_position,1
000000000000000000000000000000000000000000000000000000000
leasi,letters
leadi,letters_bak
movex,00h
init_letters:
。
LETTER赋值LETTERSBAK
movah,[di]
mov[si],ah
inesi
inedi
ineex
empex,39
jneinit_letters
movah,00h
leasi,life_flag
movex,00h
init_life_flag:
。
LIFE_FLAG武值0
mov[si],ah
inesi
ineex
empex,39
jneinit_life_flag
00000000000000000000000000000000000000000
000000000000000000
00000初始化菜单
00000000000000000000000000000000000000000
movah,0bh
movbx,0100h
int10h
。
callclear_screen
draw_text04h,38h,text_framedraw_text05h,38h,text_frame1draw_text06h,38h,text_frame2draw_text07h,38h,text_frame3draw_text08h,38h,text_frame4draw_text09h,38h,text_frame5draw_text0ah,38h,text_frame6draw_text0bh,38h,text_frame7draw_text0ch,38h,text_frame8draw_text0dh,38h,text_frame9draw_text0eh,38h,text_frame10draw_text0fh,38h,text_frame11draw_text10h,38h,text_frame12draw_text11h,38h,text_frame13draw_text12h,38h,text_frame14draw_text13h,38h,text_frame15lnit_w02d,05d,0dbh,dl,40d,rect_x1,04h
lnit_w21d,05d,0dbh,dl,40d,rect_x2,04h
Init_w02d,05d,0dbh,dh,20d,rect_y1,04h
Init_w02d,45d,0dbh,dh,20d,rect_y2,04hcallshow_info
Init_w20d,06d,0eh,dl,39d,yinfu,0fhmenu06d,58d,start_str
show_time06d,64d,start_time,08menu08d,58d,end_str
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
showtime
0000000000000
0000初始化字母
menu10d,58d,word_str
000000000000000
movah,02h
movbh,00h
movdh,04d
movdl,06d
int10h
000000000000000
000000000000000
movax,datamoves,ax
movbp,offsetlettersmovdh,03d
movdl,06d
movah,02h
int10h
movcx,39
moval,00h
movbh,00h
movbl,0fh。
框架颜色
个人资料整翌_仅限学习使用_
movah,13h
int10h
jmpnextcycle
00000000000000000000000000000000000000000
000000000000000000
from_front:
subpresent_position,39d
jmpbackto_si
find_zero:
cmppresent_position,39d
jefrom_one
movah,00h
nextsi:
addpresent_position,01h
incsi
cmp[si],ah
jebackto_di
cmppresent_position,39
jefrom_one
jmpnextsi
from_one:
movpresent_position,01h
jmpbackto_si
nextcycle:
leadi,letters
leasi,life_flag
addpresent_position,16d
cmppresent_position,39
jafrom」ront
backto_si:
addsi,wordptrpresent_position
decsi
movah,[si]
cmpah,01h
jefind_zero
backto_di:
0movah,01h
0mov[si],ah
pushcx
xorch,ch
movcl,present_position
inc_di:
incdi
loopinc_di
popcx
0adddi,wordptrpresent_position
个人资料整翌_仅限学习使用
decdi。
DI为字母位置指针,开始指向LETTER首地址
movdl,present_position
adddl,05
movah,02h
movbh,00h
movdh,03h
int10h。
找相对应都字母位置
movcx,00h
nextrow:
pushcx
movcx,00h
out_cycle:
。
延迟
pushcx
movcx,00h
in_cycle:
addcx,01h
cmpcx,1000
jnein_cycle
0000000000000000000000000000000
pushdx
movah,06h。
从键盘输入字符
movdl,0ffh
int21h
popdx
jzpass。
此行已经注释掉
cmpal,1bh。
如果键入ESC则返回主菜单
jeto_start1
cmpal,''。
如果键入SPACE则游戏暂停
jepause
cmpal,[di]。
输入字母正确!
则字母消失
jedisappear
pass:
popcx
inccx
cmpcx,speed
jeprint
jmpout_cycle
pause:
pushdx。
暂停处理
movah,06h
movdl,0ffh
int21h
popdx
cmpal,''
jnepause
jmppass
to_start1:
。
返回主菜单
jmpgame_lose
print:
movah,0ah。
在当前光标位置写空格
moval,''
movbh,00hmovcx,01hint10hincdh
movah,02h。
改变光标位置
movbh,00h
int10h
movah,09h。
在当前光标位置写字母
moval,[di]
movbh,00hmovbl,0fhmovcx,01hint10h
popcx
inccxcmpcx,17d
jeprint_next_letter
jmpnextrow。
下一行
disappear:
。
击中字母后输出空格
popcxpopcx
movah,0ahmoval,''movbh,00hmovcx,01h
int10h
addscore_number,1d
addscore_number1,1d
pushax
pushsi
pushdx
moval,score_number1
leasi,score_show
cmpal,9
jascore_next
incsimov[si],al
jmpscore_over
score_next:
incscore_number2
moval,score_number2mov[si],al
moval,30hmovscore_number1,alincsi
mov[si],al
score_over:
popsi
popax
callshowinfo
jmphit
print_next_letter:
addfailure」
cmpfailure,39
jzgame_lose
leasi,life_flag。
击中下面的符号,符号消失
addsi,wordptrpresent_positiondecsimovah,1mov[si],ahmovah,0ahmoval,20Hmovbh,00hmovcx,01h
int10h
incdh
hit:
movah,02h。
上面字母消失
movbh,00h
movdh,03h
int10h
moval,[di]。
出现下一个新字母数值都算法
addal,7d
cmpal,'z'
jaconvey_letter。
ja变jg
movah,0ah
movbh,00hmovcx,01hint10h
mov[di],al
addletters_counter,1
pushdx
pushax
pushbx
pushcx
callshow_counter
popcx
popbx
popax
popdx
show_time12d,63d,letters_count,02
jmpnextcycle
game_lose:
callget_time
time_chend_time,t_time
menu08d,58d,end_str
show_time08d,64d,end_time,08
game_again:
movah,06hmovdl,Offh
int21h
jzgame_againjmpstart
convey_letter:
subal,'z'addal,'a'movah,0ahmovbh,00hmovcx,01hint10hmov[di],al
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 课程 方案 打字 游戏