猜人物游戏Word格式文档下载.docx
- 文档编号:21883159
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:31
- 大小:370.72KB
猜人物游戏Word格式文档下载.docx
《猜人物游戏Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《猜人物游戏Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
其中除了几个基本的问题之外,每个人物都要有其独自的一个特征。
计算并设计每条信息的长度以及整条人物信息的长度和存储形式。
1.2设计游戏中的问题,即根据每个人物的信息来设计问题,比如:
“该人物是否为女性?
”、“是否为一名歌手吗?
”等等。
其次,要对每个人物独特的特征单独提出问题,这些问题是系统最后给出答案的关键。
1.3算法和数据结构的设计。
通过对用户给出的问题的答案的分析与筛选,用一定的算法设计计算出用户所要找的人物,如果在文件中没有找到相应的人物信息,系统将给出提示,要求用户输入该人物的信息,并且进行保存。
2总体设计
2.1设计思路
1)创建message文件,在文件中写入一些人物的信息。
在本程序中,设计人物信息存储方式采用的的是简化的存储方式,即利用数字来代替人物的一些信息。
例如其中的一条信息为:
“21111BegoodatpianoZhouJieLun”。
其中前5个数字分别代表问题中前5个问题的答案,这样使得存储变得简单而易操作。
之后的一个字符串是用来存储人物的独特特征的,最后就是人物的名字。
2)初始化操作,设计屏幕界面,进行清屏操作。
给出提示信息和操作信息。
3)打开文件message,将信息读入buffer缓冲区,在缓冲区中对信息进行筛选和修改操作。
4)创建文件extro,用来暂时储存用户选择的答案信息和输入的人物信息。
当程序执行完,将用户输入的信息存储到message文件中后,该文件将为删除。
5)当用户不再继续执行程序时,关闭文件message,程序正常结束。
2.2系统功能结构(如图1-1)
1)操作界面:
在程序运行开始,要在屏幕中显示游戏介绍、使用方法和操作流程以及一些必要的信息提示语句。
2)文件(message)打开、读入缓冲区、写入信息、关闭文件。
3)文件(extro)的创建、储存信息、将信息转存、删除文件。
4)程序结束。
图1-1系统功能结构图
2.3技术路线和实现方法
2.3.1打开文件并存储到缓冲区buffer中。
使用DOS系统功能调用10H中的6H,进行清屏操作。
使用DOS系统功能调用INT21H的3DH功能,获得文件句柄;
使用DOS系统功能调用中INT21H的3FH功能,读文件进入buffer缓冲区,并得到缓冲区实际存入字节数,即文件长度。
打开文件message,并将内容信息存入缓冲区buffer。
使用DOS系统功能调用INT21H的3CH创建文件extro,保存文件句柄。
2.3.2缓冲区buffer中信息处理。
在buffer缓冲区中进行的操作是:
根据系统给出的问题,对用户的回答进行分析。
若用户输入的答案与缓冲区中相应位置的信息一致则进行下一个问题的回答;
如果不匹配,就将buffer缓冲区中该条信息的标志成N,当进行信息处理时方便进行筛选,最后便于系统给出正确的人物名字。
2.3.3信息处理阶段。
将buffer中的信息进行处理分析,如果该条信息的标志位N,则判断该条信息不是用户所要查找的人物的信息,继续读下一条信息。
直到该条信息没有背标记为N时,记录此时buffer中的位置,并根据该位置去读取文件中特殊特征的信息进行再次验证是否满足用户所想的人物的信息,并且根据该条信息可以最终判定系统中是否有用户猜想的人物。
2.3.4最终查找结果操作
若查找到该人,则显示出该人物的名字,并且让用户判定是否是用户所要找的人物。
如果没有用户要找的人物,则提示用户输入该人物的特征信息和名字,系统将进行存储,以待以后的用户进行查找。
3详细设计
3.1模块划分、流程图
3.1.1缓冲区buffer中处理过程(如图3-1)
Y
N
图3-1buffer缓冲区处理过程
3.1.2系统主流程图(如图3-2)
图3-2系统主流程图
3.2数据分析与定义
数据段定义如下:
datasegment
;
inputdatasegmentcodehere
STRINGDB'
Thegamehasbegan....PleaseguessaREALFAMOUSEcharactorinyourmindfirst!
'
'
$'
STRING1DB'
Thenanswerthequestions.'
STRING10DB'
*********Payattentiontothat:
(Answer:
1.yes2.no3.donotknow)***********'
STRING0DB'
IwillguesstheCharactorwhoisinyourmindAccordingtoyouranswers!
SDB'
Areyouready?
Letushaveatry!
Presseachbuttontobegin~~~~'
STRING00DB'
-------------------------------------------------------------------------------'
STRING01DB'
Iguess.....thecharactoris-----'
STRING02DB'
Isitright?
(YORN)'
STRING2DB'
Doyouwanttocontinue?
(YorN)'
STRING3DB'
Isit'
STRING4DB'
Notfindthecharactor!
Pleasewritedownthecharactor...'
STRING5DB'
Uniquecharactor:
(26)'
STRING6DB'
Name:
(15)'
FILEDB'
message.txt'
0;
message文件ASCIIZ串
FILE1DB'
extro.txt'
extro文件ASCIIZ串
QUE1DB'
Isthecharactorafemal?
QUE2DB'
IsthecharactorspeakChinese?
QUE3DB'
Isthecharactorasinger?
QUE4DB'
IsthecharactorfromTaiwan?
QUE5DB'
Isthecharactorontheworld?
HANDLEDW?
;
message文件句柄
HANDLE1DW?
extro文件句柄
countdb?
初始化人物个数
BUFFER0DB?
BUFFERDB1024DUP(?
);
用来存储message文件中内容
BUFFER1DB26DUP(?
特征信息存储
BUFFER2DB15DUP(?
姓名信息存储
ERRORDB'
NUMBERWRONG!
数字越界错误提示信息
ERROR1DB'
OPENFILEWRONG!
打开文件错误
ERROR2DB'
CREATEFILEWRONG!
创建文件错误
ERROR3DB'
WRITEFILEWRONG!
写文件错误
dataends
3.3界面设计
使用DOS下系统功能调用10H中的6H,设置文字颜色和背景颜色。
调用宏进行清屏。
宏定义为:
MACRO1MACRO
PUSHAXPUSHBXPUSHCXPUSHDX
MOVAH,6
MOVAL,0
MOVCH,0
MOVCL,0
MOVDH,24
MOVDL,79
MOVBH,74H
INT10H
POPDXPOPCXPOPBXPOPAX
ENDM
对于提示语句的输出,设置好显示方式,使得界面更加友好。
程序运行界面如图3-3:
图3-3
4编码实现(源程序)
源程序见附录
5运行结果
1)初始状态下,文件中内容存储如图3-4
图3-4
2)例如:
查找周杰伦
图3-5
承接图3-5,当用户确定系统判断正确时,系统会提示是否继续游戏,输入Y时将继续游戏。
如图3-6:
图3-6
3)如果系统没有找到该人的信息,(或者在上图系统问“Isitright?
”,若输入为N时)系统会提示没有找到与用户提供的信息一致的人,则要求用户输入该人的特征信息和姓名。
如下图3-7:
图3-7
承接图3-7,我们继续操作,输入特征信息为“Ateacherathuaidan”,姓名输入:
“Subeilin”,如下图3-8。
图3-8
4)此时,当我们想继续游戏查找“SaBeining”这个人时,我们不妨先看一下message文件夹中是否已经将用户输入的这条信息储存到文件中,打开文件夹可以看到,该条信息已经被储存到文件夹中去了,如下图3-9:
图3-9
5)继续执行改程序,我们查找“SaBeining”这个人,执行结果如下图3-10所示:
图3-10
由运行结果可知,确实可以查找出新添加进去的信息的人物。
三、课程设计结论
汇编课程是一门理论性和实践性都很强的学科,只有实际动手编写算法、上机运行和调试程序,才能更好地理解和掌握所学的知识,提高程序设计和问题分析能力。
一周的汇编语言程序设计很快就结束了,通过本次课程设计,对汇编语言有了更加深刻的理解,使用更为熟练,同时训练了调试程序的能力。
通过自己设计程序的全部流程,对每个环节都要十分清楚。
代码完成后深切的感觉到,编写代码前的设计十分的重要。
因为,如果等到完成了许多功能后,再需要增添一个功能,或改写一个光标的位置,汇编语言的改写比java等高级语言麻烦的多,十分不好改,毕竟汇编是一种低级语言,没有面向对象的概念,很有可能大部分带都重写,导致效率十分低。
在程序的调试过程中熟悉了通过观察各个寄存器内值的变化来跟踪程序的运行是否有误。
在程序设计分析时,不知道该如何进行人员信息的存储,既用以往的存储方式,即把每个人物的信息用英文字符串来存储,在实际操作中我发现,这样做非常繁琐,对字符串中字符的个数的计算非常麻烦。
除此之外,对于不同人物的信息的长短也不尽相同,很难控制和界定每个属性的个数。
在这样的情况下,我尝试从问题的答案入手,分别用1、2、3来代替yes、no、donotknown三个答案形式,这样简化了输入的繁琐。
从这个基础上,我试图同样用1、2、3来代替message文件夹中各个人物的基本信息。
这样,可能需要很多个字符串才能将人员信息描述完整的信息,我仅仅用了5个字符就搞定了,在算法中进行信是省去了不少功夫,而与用实际描述的字符串信息比较,达到的效果是一样的。
可以说这样的信息存储方案是一个不错的选择。
对于系统的灵活性,随着使用人数的增多,信息量的增大,在查询时,系统提问的问题的个数也将增多,直到满足用户查找人的特征为止。
该系统也实现了将人员信息有效的存储并且有效的查询的功能。
在编程的过程中,在算法部分花了很大的精力。
各种条件的判断,不符合条件的信息的删除,符合条件的信息的筛选,都是必须要谨慎考虑的问题。
用汇编语言编写程序的一大特点是,在使用某个寄存器之前,必须要考虑此时寄存器的使用会不会将之前的参数改变,因此,在每使用一个寄存器之前,一定要将不能被改变的参数存储到堆栈中或者保存到内存单元中。
在这方面也是在编程的过程中深深体会到了,也吃了不少这方面的亏,可是这样也提高了我分析程序的能力,以及自己查找错误的能力。
紧接着,文件的打开、读入、写入、关闭,出现了一些错误,包括各项操作进行的顺序,功能调用的入口参数,都产生了逻辑错误,通过深入学习功能调用,和进行程序调试,解决了问题。
与此同时,编写过程中,经常会遇到逻辑错误,通过CV调试,单步跟踪,更改操作对象,或更改设计思路等等方式,逐项解决错误。
程序的编写过程中也暴露出自身的问题,基本功不够扎实,对一些功能调用的理解不够全面,对以前学过的数据结构等知识有些遗忘,而且平时上机练习力度不够,通过此次课程设计,提醒自己要加强动手操作能力,多多上机练习,提高主动学习的积极性,这样才能不断提高,才能享受编程的乐趣。
四、参考文献
[1]傅德胜,孙文静.高级汇编语言程序设计及应用.东南大学出版社,2009年12月第1版
[2]马力妮.80x86汇编语言程序设计.机械工业出版社,2007年7月第1版
[3]詹仕华.汇编语言程序设计.北京:
中国电力出版社,2008.2
[4]温冬蝉,沈美明.IBMPC汇编语言程序设计.北京:
清华大学出版社,2002.3
附录(源程序):
MACRO1MACRO;
清屏
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,6
MOVAL,0
MOVCH,0
MOVCL,0
MOVDH,24
POPDX
POPCX
POPBX
POPAX
数据段定义
0
(1.yes2.no3.donotknown)'
HANDLEDW?
HANDLE1DW?
)
stacksegment'
STACK'
inputstacksegmentcodehere
stackends
codesegment'
CODE'
代码段定义
assumecs:
code,ds:
data,ss:
stack
START:
movax,data
movds,ax
MOVcount,15;
;
MACRO1;
清屏宏调用
BEGIN:
显示提示信
CALLPROC1
LEADX,STRING00
MOVAH,9
INT21H
LEADX,STRING
CALLPROC1
LEADX,STRING1
callproc1
movah,9
leadx,STRING10
callPROC1
LEADX,STRING0
LEADX,S
MOVAX,3D00H;
OPENFILE
LEADX,FILE
MOVAL,01H;
READANDWRITEOPEN
JCERR1;
OPENWRONG
MOVHANDLE,AX
MOVAH,3CH;
CREATEFILE1
MOVCX,0
LEADX,FILE1
JCERR2
MOVHANDLE1,AX
MOVAH,3FH;
READTOBUFFER
LEADX,BUFFER
MOVBX,HANDLE
MOVCX,1024
INT21H
movah,1
int21h
movbl,47;
everymessage47
divbl;
axrealcount
movcount,al
popcx;
收集信息阶段
movcount,cl
Q1:
MOVSI,0
XORCX,CX
movcl,count;
7
LEADX,QUE1
MOVAH,1
PUSHAX
MOVBUFFER0,AL
MOVAH,40H;
WRITEFILE1
MOVBX,HANDLE1
MOVCX,1
LEADX,BUFFER0
cmpAL,'
3'
数字越界处理
jaERR
1'
jbERR
CMPAL,'
JNZLOP2
LOP1:
CMPBUFFER[SI],'
JZADD1
MOVBUFFER[SI],'
N'
ADD1:
ADDSI,47
LOOPLOP1
JMPQ2
LOP2:
CMPBUFFER[SI],'
JNZADD2
ADD2:
LOOPLOP2
next1:
CALLPROC1
leadx,BUFFER
MOVAH,9
INT21H
Q2:
MOVSI,0
XORCX,CX
movcl,count
LEADX,QUE2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人物 游戏
![提示](https://static.bdocx.com/images/bang_tan.gif)