汇编语言 实现贪吃蛇双任务系统

一、 设计题目
(1) 题目名称:双任务系统设计。
(2) 题目概述:将一个dos窗口分为左右两边大小适中且相等的显示窗口,画出每个窗口的边框。两边窗口可各自实现不同的功能,并能通过中断服务程序或循环程序实现两个任务的管理和调度。
二、 设计内容
通过对赛题的仔细分析和研究,我们小组首先尽力实现了题目的基本要求,并对整个系统进行了能力所及最大程度的优化和美化,界面友好,易于操作。

  1. 系统目标
    竞赛题目为双任务系统设计,且设计提示中提到“任务形式可不局限于贪吃蛇与三角形两种”,故而双窗口/双任务的管理调度为该题目核心。具体功能如下:
    ① 执行双窗口任务前首先显示主界面,按下m键方可进入系统,否则返回DOS;
    ② 进入系统后,光标于左窗口下方闪烁,贪吃蛇游戏开始运行,通过Tab可实现双窗口切换,若窗口切换到右窗口,则左窗口程序暂停,转而执行右窗口程序;再次Tab回左窗口时贪吃蛇游戏继续,按Esc键返回DOS。

  2. 主体功能
    ① 进入贪吃蛇游戏后,利用WSAD控制贪吃蛇行进方向上下左右,R键重新开始游戏;
    ② 随机产生食物,贪吃蛇吃到食物的瞬间蛇头颜色改变(形成生动的吞咽效果),与此同时,身体加长(形成生长效果);
    ③ 当蛇头碰到窗口边框或者自己的身体时,游戏终止,直接返回DOS;
    ④ 光标在左窗口时按下Tab键,当前窗口立即切换为右窗口,光标于右窗口下方闪烁。
    ⑤ 同时,右窗口下方出现提示语”Please input 1~9 or q”(这里对右窗口的任务进行了小改),按下数字,会输出对应高的三角形,而按下q键,会生成一个正方形。

  3. 开发环境/所用软件
    ① win64
    ② DOSbox,Masm.exe,Link.exe,Debug.exe,记事本

三、 概要设计
1、方案设计
在这里插入图片描述
(1) 主界面说明
主要确定界面样式,实现与用户的简单交互。
(2) 双窗口说明
用于管理调度左右窗口,切换当前运行的程序且双窗口边框可通过光标移动生成。
2、模块功能说明
该部分在需求分析中叙述的比较详尽,结合以上,画出主体模块功能框图如下:

在这里插入图片描述
(1) 贪吃蛇说明
① 通过光标移动绘出蛇形(定时器:控制蛇的速度)
② 随机产生食物(主要是实现生成随机数)
③ 键盘控制蛇的走向(非阻塞接收按键)
(2) 三角形说明
① 输入1~9(高)画出三角形
② 输入数字不同三角形的样式不同
③ 输入字母q时绘制正方形
以上两个模块均通过分支、循环实现。核心为各个函数间的相互调用。
四、运行结果及说明
(1)主界面
在这里插入图片描述
Tips:判断是否为m,若是则进入双窗口,否则返回DOS。

(2)贪吃蛇
在这里插入图片描述
Tips:WSAD分别表示上下左右;
在这里插入图片描述
Tips:吃到食物的瞬间颜色变化;
在这里插入图片描述
Tips:蛇身由短变长。

(3)三角形
在这里插入图片描述
Tips:输出不同高且不同样式的三角形;
(4)正方形
在这里插入图片描述
Tips:键入q输出正方形。
五、设计技巧及体会
①任务评价
合理之处:
本次比赛,拿到题目后,我们并没有立即动手去做,而是首先对任务进行了仔细研究,对功能进行了主次划分,随后通过各种渠道搜集资料。
第一次开会时,组内对各模块的实现顺序进行了讨论,决定先把贪吃蛇,双窗口,三角形各自做出来,使其可以在DOS下单独运行,整理三者之间的逻辑关系,利用子程序调用/宏调用将三个模块合在一起,反复调试,不断编译查错,以求达到最佳效果。
在任务分配上,我们一致认为组内所有人坐在一起做程序要比单枪匹马效率更高,出现问题可以及时交流,快速纠正。程序完成后,我们没有直接写文档,而是反复看代码,顺逻辑,并规范代码,统一注释的格式,这使得我们在画流程图时更加轻松。
不足之处:
在检错调错方面,我们花费了大量时间,原因大致有3点:
a. 随着代码行数的增加,难免对前面的函数等有遗忘,逻辑的混乱,对调错影响极大,严重影响了纠错效率;
b. 在宏定义、子程序以及标号的命名上,我们一开始比较随心,用的都是些看似简单的字母,但是随着功能增多,发现每次需要调错时都要回过头再看一遍对应的程序,命名不能做到“见名知意”使我们浪费了许多宝贵时间。
c. 自身知识储备还不太足,很多理论知识都有遗忘,上机不够熟练。对于Debug的使用还不是很习惯。
改进方案:
在附上源代码之前,先将不规范的地方改正过来,对注释不完善的地方进行添加。
②心路历程
回顾从组队到实现系统的整个过程,一开始刚组好队时欣喜快乐,满脑子是用汇编写程序,听起来就很酷;拿到命题时自我怀疑,不论从哪个模块下手都是浩大的工程。方案讨论了一个又一个,又排除了一个又一个,总算确定了思路。动手做程序也同样是一会儿顺利伴随几经波折,每天都有各种各样的bug,右窗口程序加不进去时不知所措,三个人调错到“自闭”还要互相鼓励;系统完成之后,心里的石头终于落地。
这种不甚顺利的历程,一方面增强了队伍的凝聚力,促进团队合作,考验了我们的耐心和毅力;另一方面,不断查资料调试纠错,使我们“有所想”、“有所得”,收获远比比赛本身意义更大的东西。

发布了11 篇原创文章 · 获赞 1 · 访问量 242

猜你喜欢

转载自blog.csdn.net/weixin_41708548/article/details/103842893