猜数字游戏程序设计
更新时间:2023-11-01 01:58:01 阅读量: 综合文库 文档下载
课程设计任务书
学生姓名: 专业班级: 自动化1004班 指导教师: 工作单位: 自动化学院 题 目: 猜数字游戏程序设计
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1. 猜数字游戏程序设计随机产生一个0至149的数字(不显示),输入猜测数字,程序提示和所猜数字大小,直至正确,猜数正确后显示猜数的次数,程序采用汇编语言在PC机上完成。
2. 画出简要程序流程图,编写程序。
3. 撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:
2012年12月 30日----- 12月31日 查阅资料及方案设计 2013年01月 01日----- 01月05日 2013年01月06 日----- 01月08日
编程 调试程序
2013年01月09 日----- 01月10日 撰写课程设计报告
指导教师签名: 20 年 01 月 11 日 系主任(或责任教师)签名: 年 月 日
目录
摘 要..............................................................................................................................................1 1 汇编语言基础............................................................................................................................2 1.1汇编语言简介 ...................................................................................................................2 1.2汇编语言特点 ...................................................................................................................2 2 设计原理分析............................................................................................................................3 2.1随机数的产生 ...................................................................................................................3 2.2子模块 ...............................................................................................................................3 2.3设计流程图 .......................................................................................................................4 3 子程序分析................................................................................................................................5 3.1 RAN的主要算法 ..............................................................................................................5 3.2 INPUT的主要算法 ..........................................................................................................5 3.3 ENTER的主要算法 .........................................................................................................6 4 源程序 ........................................................................................................................................7 4.1程序代码 ...........................................................................................................................7 4.2程序运行截图 .................................................................................................................13 心得体会......................................................................................................................................15 参考文献......................................................................................................................................16
摘要
该程序为玩家提供猜数字游戏的基本功能。当用户选择开始游戏时,系统会在内部产生对应范围内的随机数,以供用户进行猜测,用户每次猜数字后系统会给出本次猜数字的结果提示,先比较用户猜测数字是否等于系统产生的随机数,若相等则提示用户猜数字成功。如果用户猜测数字不等于系统产生的随机数,则提示该数字与随机数比较时大了还是小了,并输出比较结果,同时记录当前用户猜测的次数。直至用户成功猜中随机数。
关键词:随机数的产生 余数
3
1 汇编语言基础
1.1汇编语言简介
汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。
作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为人们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
1.2汇编语言特点
1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。 2.保持了机器语言的优点,具有直接和简捷的特点。
3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 5.经常与高级语言配合使用,应用十分广泛。
4
2 设计原理分析
2.1随机数的产生
真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的,这样可以认为这个可预见的结果其出现的概率是100%。所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。
此程序的关键问题是如何产生一个1~100之间的随机整数(本程序中所涉及的数均指整数,以下不再赘述)。可以调用BIOS的功能调用1AH号中断(MOV AH,0 INT 1AH)或者调用DOS系统功能调用21H号中断(MOV AH,2CH INT 21H)取系统时间,DH:DL=秒:1/100秒。将DX中的内容赋给AX,并将AX的高六位清零,然后AX除以150,则会产生0~149之间的余数。
2.2子模块
本程序共分为六个模块:
MAIN -------程序的入口点,程序运行后在DOS屏幕上显示主菜单,给出相关的操作提示,并调用RAN、GUESS、ENTER等子程序。
RAN -------调用相关的中断,取系统时间,产生一个0~149之间的随机数。 GUESS------本程序的重要模块,调用INPUT、PRINT、ENTER等子程序。 INPUT------用于玩家输入其所猜之数,并给出相关的输入提示。 PRINT------用于游戏结束时输入系统所产生的随机数。 ENTER-------用于回车换行
5
2.3设计流程图
设计流程图如图2-1所示。
开始 定义语句 设置游戏界面 产生随机数 录入猜测值 计数 数值判断 小于 大于 计数 相等
结束 图2-1设计流程图
6
3 子程序分析
3.1 RAN的主要算法
RAN PROC NEAR PUSH AX PUSH DX
MOV AH,0 ;读时钟计数器值 INT 1AH
MOV AX,DX
AND AH,3 ;将高6位清零
MOV DL,150 ;除以150,产生0~149余数,余数在AH中
DIV DL
MOV AL,AH MOV AH,0
MOV RANDOM,AX ;将随机数保存于RANDOM中 MOV AH,09H LEA DX,MESS2 INT 21H
CALL NEAR PTR ENTER POP DX POP AX RET RAN ENDP
3.2 INPUT的主要算法
INPUT PROC NEAR
MOV BX,0
INL1:MOV AH,01H INT 21H
CMP AL,0DH JZ INEXIT CMP AL,30H JAE INL2 CMP AL,08H JE INL1
CALL NEAR PTR ENTER MOV AH,09H LEA DX,MESS9 INT 21H
INL2:CMP AL,39H JBE INL3
CALL NEAR PTR ENTER
7
MOV AH,09H LEA DX,MESS9 INT 21H JMP INL1 INL3:AND AL,0FH MOV AH,0 XCHG BX,AX MOV CX,10 MUL CX
ADD BX,AX JMP INL1 INEXIT:
MOV INNUM,BX RET INPUT ENDP
3.3 ENTER的主要算法
ENTER PROC NEAR PUSH AX PUSH DX
MOV AH,02H MOV DL,0DH INT 21H
MOV DL,0AH INT 21H POP DX POP AX RET ENTER ENDP
8
4 源程序
4.1程序代码
DATA SEGMENT
RANDOM DW ? ;用于保存产生的随机数 INNUM DW ? ;用于保存玩家输入的数 JISHU DW 0 ;用于保存玩家猜数的次数 MENU DW 0
DB 0DH,0AH,\ DB 0DH,0AH,\
*\
DB 0DH,0AH,\ MAIN MENU
*\
DB 0DH,0AH,\
*\
DB 0DH,0AH,\ S. START THE GAME
*\
DB 0DH,0AH,\
*\
DB 0DH,0AH,\ E. EXIT THE GAME
*\
DB 0DH,0AH,\
*\
DB 0DH,0AH,\ DB 0DH,0AH,\
TITLE1 DB 0DH,0AH,\ NUMBER-GUESSING GAME\,
0DH,0AH,\
MESS1 DB 0DH,0AH,\.$\
MESS2 DB 0DH,0AH,\RANDOM NUMBER HAS BEEN
GENERATED.$\
MESS3 DB 0DH,0AH,\INPUT THE NUMBER YOU
GUESS(DECIMAL,BETWEEM 0 AND 149):$\
MESS4 DB 0DH,0AH,\,PLEASE REGUESS:$:\ MESS5 DB 0DH,0AH,\,PLEASE REGUESS:$\ MESS6 DB 0DH,0AH,\,YOU GUESSED!$\ MESS7 DB 0DH,0AH,\ MESS8 DB 0DH,0AH,\DATA ENDS
CODE SEGMENT MAIN PROC FAR
ASSUME CS:CODE,DS:DATA BEGIN:
9
PUSH DS SUB AX,AX PUSH AX
MOV AX,DATA MOV DS,AX
CALL NEAR PTR ENTER MOV AH,09H LEA DX,TITLE1 INT 21H
MOV DX,OFFSET MENU INT 21H
LEA DX,MESS8 INT 21H
MOV AH,01H INT 21H
CALL NEAR PTR ENTER ML1: CMP AL,'S' JE ML2
ML2: MOV JISHU,0 MOV AH,09H LEA DX,MESS1 INT 21H
CALL NEAR PTR ENTER CALL NEAR PTR RAN
CALL NEAR PTR GUESS MOV AH,09H LEA DX,MESS8 INT 21H
MOV AH,01H INT 21H
CALL NEAR PTR ENTER ML3:CMP AL,'E' JE EXIT
ML4:MOV AH,09H MOV AH,01H INT 21H
CALL NEAR PTR ENTER JMP ML1
EXIT:CALL NEAR PTR ENTER MOV AH,4CH INT 21H RET MAIN ENDP
10
RAN PROC NEAR PUSH AX PUSH DX
MOV AH,0 ;读时钟计数器值 INT 1AH
MOV AX,DX ;将高6位清零 AND AH,3
MOV DL,150 ;除以150,产生0~149余数,余数在AH中 DIV DL
MOV AL,AH MOV AH,0
MOV RANDOM,AX MOV AH,09H LEA DX,MESS2 INT 21H
CALL NEAR PTR ENTER POP DX POP AX RET RAN ENDP
GUESS PROC NEAR MOV AH,09H LEA DX,MESS3 INT 21H
ADD JISHU,1
GL:CALL NEAR PTR INPUT MOV AX,INNUM MOV BX,RANDOM CMP AX,BX JA GL1 JB GL2
CALL NEAR PTR ENTER MOV AH,09H LEA DX,MESS6 INT 21H
CALL NEAR PTR ENTER LEA DX,MESS7 INT 21H
CALL NEAR PTR PRINT JMP GEXIT1
GL1:CALL NEAR PTR ENTER MOV AH,09H LEA DX,MESS4
;将随机数保存于RANDOM中 11
INT 21H
ADD JISHU,1 JMP GL
GL2:CALL NEAR PTR ENTER MOV AH,09H LEA DX,MESS5 INT 21H
ADD JISHU,1 JMP GL GEXIT1:
CALL NEAR PTR ENTER CALL NEAR PTR ENTER RET GEXIT2:
CALL NEAR PTR ENTER MOV AH,09H
CALL NEAR PTR ENTER LEA DX,MESS7 INT 21H
CALL NEAR PTR PRINT CALL NEAR PTR ENTER CALL NEAR PTR ENTER RET GUESS ENDP
PRINT PROC NEAR
MOV AX,RANDOM MOV BL,100 DIV BL
MOV BL,AH CMP AL,0 JE PL1
MOV DL,AL OR DL,30H MOV AH,02H INT 21H
PL1:MOV AL,BL MOV AH,0 MOV BL,10 DIV BL
MOV BL,AH CMP AL,0 JE PL2
MOV DL,AL
12
OR DL,30H MOV AH,02H INT 21H
PL2:MOV DL,BL OR DL,30H MOV AH,02H INT 21H RET PRINT ENDP
INPUT PROC NEAR MOV BX,0
INL1:MOV AH,01H INT 21H
CMP AL,0DH JZ INEXIT CMP AL,30H JAE INL2 CMP AL,08H JE INL1
CALL NEAR PTR ENTER MOV AH,09H INL2:CMP AL,39H JBE INL3
CALL NEAR PTR ENTER MOV AH,09H JMP INL1
INL3:AND AL,0FH MOV AH,0 XCHG BX,AX MOV CX,10 MUL CX
ADD BX,AX JMP INL1 INEXIT:
MOV INNUM,BX RET INPUT ENDP
ENTER PROC NEAR PUSH AX PUSH DX
MOV AH,02H MOV DL,0DH INT 21H
13
MOV DL,0AH INT 21H POP DX POP AX RET ENTER ENDP CODE ENDS END BEGIN
14
4.2程序运行截图:
利用16位编译系统调试程序如图4-1所示
图4-1 利用16位编译系统调试程序
游戏开始界面如图4-2所示
图4-2 游戏开始界面
15
正在阅读:
猜数字游戏程序设计11-01
九年级语文上册第五单元第19课《范进中举》教学设计人教版04-10
四年级上科学实验报告单09-20
校运会班级解说词02-06
在公司人力资源管理工作会议上的总结讲话03-09
周口经济发展出路07-26
网络及信息安全考试练习及答案03-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 数字
- 游戏
- 北京市西城区2013届高三上学期期末考试英语试题 - 图文
- 五四红旗团委事迹材料
- 特色农业种植园建设项目可行性研究报告可研报告
- 2018-mba面试的常见问题及精彩回答-精选word文档(4页)
- 自卑
- 曼昆《经济学》第5版习题解答(宏观部分) - 图文
- 九年级物理18.1电能电功教案(新版)新人教版(1)
- 2012年大三学生党员个人述职报告
- 大工16春《钢筋混凝土结构课程设计》模板答案
- 第二节人体内废物的排出(1)尿液的形成
- 概率论答案05
- 2013新课标苏教版二年级数学上册第三单元最新教案
- 2016江苏初中英语听力口语自动化考试-话题简述中文
- 大学生消费状况调查报告 - 图文
- 无砟轨道与有砟轨道的对比 - 图文
- 豫发改收费〔2005〕1881号《河南省机动车存放服务收费管理实施细则》
- 毕业设计说明书 - 带式污泥脱水机的机构设计(3)
- 项目部各责能部门岗位职责 - 图文
- oracle练习题改进
- 吉林省建筑装饰行业企业名录2018版2153家 -