终稿打字练习游戏程序Word文件下载.docx
《终稿打字练习游戏程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《终稿打字练习游戏程序Word文件下载.docx(39页珍藏版)》请在冰豆网上搜索。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可了。
《打字游戏程序设计》课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。
因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。
通过具体的问题分析、设计、调试、运行程序。
在实际问题中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。
就这个程序具体而言:
调用宏,显示背景和主界面,通过选择不同的选项,可以进入不同的界面;
采用BIOS功能的中断,可以在任何时候退出当前所在的界面并通过选择进入其他的界面。
这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。
第1章系统分析
要求完成一个打字练习程序,即在规定的时间内按下屏幕上显示的字母,字母就消失,否则字母一直移动到屏幕底端。
流程图
本次程序开始是一个主界面,在主界面上包括四个选项,第一个选项是进入打字子程序,第二个是选择进入等级设置子程序,第三个是进入帮助子程序,第四个是退出主界面,以下是程序的主流程图:
开始
输入密码
主界面
速度选择
游戏界面
ESC返回主界面Space暂停E退出
第2章系统总体设计
2.1打字程序包括以下五个子程序:
(1)主界面的显示模块;
(2)打字练习模块;
(3)设置速度模块;
(4)密码模块;
(5)清屏模块。
其中的打字练习模块又分为以下三个子程序:
(a)游戏界面模
(b)功能模块
2.2算法的整体设计思路
此程序涉及到宏和I/O中断的调用,通过对宏的定义和使用以及对I/O中断的使用,实现程序的相应功能。
利用宏,实现各个界面的显示,采用中断,实现各个子程序的相互转换。
其中最主要的是打字程序:
运行程序,打字界面中出现由26个字母组成的乱
,否序行,这时其中会有任一字母落下,在键盘上输入该字母,字母消失,分数值加1则字母一直移动到屏幕底端,然后消失,生命值减1。
当生命值减为零且未在字母下落到屏幕底端之前输入该下落字母时,打字练习结束,显示结束界面。
2.3程序的主要特点
本程序最大的特点就是具有较好的人机交互功能。
在主界面中,用户可以选择不同的游戏等级,他们能够根据自己的实际打字速度,选择相匹配的等级进行打字练习。
如果用户对我们设计的程序有不明白的地方,可以选择帮助进行求解,并能与我们联系,讨论程序的不足,寻求改进,或者分享程序中的精妙之处。
此外,根据用户的打字情况我们会给予他们相应的分数和生命数。
第3章详细设计3.1主界面伪代码
系统的主界面主要是显示欢迎语,制作人,时间,速度选择等主界面信息。
方便用户了解信息并进行选择操作。
用户密码为“111111”。
在用户输入正确的密码之后即可进入游戏进入下一选择菜单。
STR1DB'
Welcometoplaychars'
0AH,0DH,'
$'
STR2DB'
Madebylimingmingjiangsongli'
$'
STR3DB'
2012/6/21'
STR4DB'
Pleasechoosespeeding'
STR5DB'
PleasepressEntertocintinue...'
STRADB'
<
------Pleasechoose----->
'
STRBDB'
score:
'
'
i'
STRCDB'
Youchoose:
STRDDB
hqfuvodepfdjygnhtrwgaerjrklubgsnyrsbntrsbngtrdjykuahtrgregfytjgfjytjktru'
STREDB'
RIGHT:
MES5DB"
PLEASEENTERYOURPASSWORD:
$"
PASSWORDDB"
111111"
PASSWORD1DB6DUP(?
)
3.2等级界面伪代码
在主界面中选择2,进入等级界面的设置,其中有6个等级,代表不同的难易程度。
用户可选则其中的任意一个级别,按Enter键表示确定并返回主界面,若用户输入的错误的等级,则一直等待,直到输入了正确的等级。
以下是等级界面的伪代码:
STR7DB'
speed1'
STR8DB'
speed2'
STR9DB'
speed3'
STR0DB'
Selectthenumberamong1-3'
3.3游戏界面伪代码
此伪代码显示的是进入打字界面的提示信息:
ST1DB'
Pause'
ST2DB'
E:
Quit'
ST8DB'
Esc:
Back'
ST3DB'
FunctionMeun'
ST4DB'
pleaseinput...'
ST5DB'
SPACE:
Continue'
ST6DB'
ThankYou!
ST10DB'
;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
ST9DB'
VREYGOOD!
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
3.4清屏子程序设计
BIOS功能调用中的INT10H功能6能使屏幕内容上卷指定的行,这个功能需要设置4个参数,分别代表清屏区域的左上角的坐标和右下角的坐标。
如果屏幕的其实行列不为(0,0)结束的行列不为(24,79),则屏幕上只有指定的一部分具有上卷的功能,这个屏幕伤的部分区域叫做窗口(window)像这样的窗口可以在屏幕上设置多个,这些窗口都可以独立使用。
如果上卷超过指定窗口的顶部,这些行的内容就消失,出现在窗口
底部的新行被填为空格,其属性用BH寄存器决定。
如果AL=0,则实现完成的工作是清楚屏幕的功能,它将按AL中的BH字符使指定的窗口为空白。
以下是清除全屏幕的子程序:
CLEARPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,6
MOVAL,0;
blankscreen
MOVBH,7
MOVCH,0;
左上角行号
MOVCL,0;
左上角列号
MOVDH,24;
右下角行号
MOVDL,79;
右下角列号
INT10H;
屏幕初始化或上卷
MOVDX,0;
行列号都为0
MOVAH,2
置光标位置;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
DIS525D,10100100B;
置背景色背景蓝前景红
DIS525D,11110100B;
置背景色背景白色前景红
DIS3
RET
CLEARENDP
3.5密码程序设计
DIS1MES5,5,15
LEABX,PASSWORD1
MOVCX,6
INPUT:
MOVAH,07H
INT21H
MOV[BX],AL
INCBX
MOVAH,02H
MOVDL,'
*'
LOOPINPUTCONTIUN:
CMPAL,0DH
JNECONTIUNMOVCX,6
LEASI,PASSWORD
LEADI,PASSWORD1CHECK:
MOVAL,[SI]
CMPAL,[DI]
JNESTART
INCSI
INCDI
LOOPCHECK
3.6宏代码
3.6.1在指定位置显示彩色字符串;
=========================================================
DIS1MACROSTRING1,Y,M
MOVBH,0;
页号
MOVDH,Y;
行标
MOVDL,M;
列标
置光标位置
MOVAH,09H
MOVDX,SEGSTRING1
MOVDS,DX
MOVDX,OFFSETSTRING1
INT21H;
显示字符串
ENDM
========================================================
3.6.2显示背景
============================================================
DIS5MACROS1,S2
DIS2
blankscreen
MOVAL,s1;
上卷25行
MOVBH,s2;
绿色背景红色前景
MOVCH,0
MOVCL,0
MOVDH,0
MOVDL,80
屏幕初始化或上卷
===============================================================
3.6.3画横向边框的宏
DIS6MACROZ1,Z2,Z3,Z4
LOCALC5;
LOCAL为重复定义的定义符
MOVCX,Z1;
循环次数
MOVDL,Z2;
列
C5:
MOVAH,2
MOVBH,Z3;
MOVDH,Z4;
行
MOVDL,2AH
输出‘*’
POPDX
INCDL;
列++
LOOPC5
3.6.4画竖边框的宏
===================================================================
DIS7MACROQ1,Q2,Q3,Q4
LOCALF1;
MOVCX,Q4
MOVDH,Q1;
F1:
MOVBH,Q2
MOVDL,Q3;
INCDH
LOOPF1
=======================================================================
3.7功能的进一步完善
3.7.1完善代码一
修改界面背景属性
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
DIS525D,10100100B;
DIS525D,01001111B;
置背景色背景红前景白
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
闪背背背亮前前前
烁景景景度景景景
显示背景
==