汇编课程设计拼图游戏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成绩:中北大学
汇编语言程序设计
课程设计说明书
学生姓名:马刚学号:18
学院:
专业: 软件工程
题目: 拼图游戏
小组成员:
指导教师:
2011 年 12月
一、需求分析
1.1编写背景
随着信息时代的发展,计算机已经变为我们生活中不可缺少的一部分,它作为我们了解世界的一个窗口的同时还可以让我们从中以最快的速度查找学习资源,休闲之余,更多的人选择玩小型的益智游戏来放松,因为它不仅达到了娱乐的目的,而且对自己的思维有一定的帮助作用,根据大多数人的娱乐放松需求,我们做出了一款益智游戏——拼图游戏。拼图以游戏的形式锻炼了游戏者的脑、眼、手等,使人们获得身心健康,增强自身的逻辑分析能力,和思维敏捷性,娱乐性也十分强,既好玩又耐玩。
1.2编写目的
在此次课程设计中最主要的目的是通过对拼图的分析、设计与实现,将原理与应用相结合,使我们学会如何把书本上学到的知识用于解决实际问题中,培养我们的动手能力;另一方面是使我们能深入理解和灵活掌握教学内容。
1.3设计内容
根据设计任务和要求,在设计前必须对汇编语言熟悉了解和掌握。设计中完成的是对文件功能,鼠标操作功能,菜单功能和参数设置功能及其他功能的实现。
1.4设计要求
(1)文件功能:即实现打开游戏、保存相关参数的功能。
(2)鼠标操作:点击并移动数字。
(3)菜单功能:具有UNDO和REDO功能;并且可记忆所走的步及步数。
(4)其他功能:可以显示出时间,有自动寻找移动(或拼图)的方法,可以替换图片的颜色。
1.5系统需求分析
1.5.1 功能需求分析
本实验是用汇编语言编写完成,功能完全仿照传统的拼图游戏制作而成,通过移动每一小块数字,每次只允许移动一块,最终要求将数字按从小到大的顺序排列出来,并且要求记录完整实现拼图所需的步数和时间。
拼图游戏的主要功能如下:
(1)让玩家用鼠标控制界面上各个菜单选项的选择,直接点击菜单栏进入
菜单。
(2)当玩家选择游戏类型后输入姓名,点击回车,进入拼图游戏主界面。
(3)玩家可以通过键盘或鼠标控制图片的移动;游戏中记录玩家的步数。
(4)玩家可以根据选择不同的数字排列来进行游戏。
(5)游戏结束后出现一句人性化的鼓励标语:“恭喜您完成拼图!”。
1.5.2 系统界面和性能要求
美观,简洁,实用等,并且实时性好、可靠性好。
1.5.3设计约束
开发工具:masm
运行环境:DOS环境
能实现定义的各项要求
1.5.4软硬件要求
在Windows平台上运行
1.5.5系统安全性需要
在进行游戏时,必须对游戏等级,按键选择进行判断,并且判断游戏是否能够继续进行或结束,确保游戏数据安全。
二、总体设计
2.1系统总体设计
由于我们要将这个游戏写成一个应用程序,所以首先对游戏各个功能模块的实现进行了分工如下:
组长:
李玲:对游戏的需求分析及设计方案进行设计,并负责对游戏中文件功能及UNDO和REDO功能的实现。
组员:
赵世泉:负责对鼠标操作功能和具体菜单功能的实现,并实现代码的连接。
马宏:负责对游戏中记忆所走步数及步数和显示时间功能的实现。
李紫:负责对游戏中自动寻找移动(或拼图)方法的功能的实现。
侯凯:负责对游戏中可替换颜色的功能的实现。
2.2 游戏设计思想
本游戏的规则是:进入拼图游戏后,出现9个方格或是16个方格的游戏界面上有一个空格,游戏中在拼图过程中按下N键可以对数字进行重新排列,键盘中A代表向左走,D代表向右走,W代表向上走,S代表向下走。通过这四个键就可以将空格对应的上、下、左、右方向的小数字块移动到空格中,当所有的小数字块被移到了正确的位置后系统会自动显示整个排序好的图片,这就说明拼图已经完成。拼图完成之后,“步数”后面显示的数字就是你拼完总共用的步数。本游戏分为2种难度等级,一种为简单等级,是3*3的9个格子的拼图;另一个为困难等级,是4*4的16个格子的拼图。
2.3总体流程设计如下
图1 总体设计流程图
2.4 游戏的总界面如下
图2 进入游戏总界面
进入游戏主界面选择游戏类型:游戏一和游戏二,游戏一为普通类型,游戏二为困难类型。用1和2数字键选择进入,则开始游戏;选择q来退出游戏。显示结果如下图3和图4:
图3 游戏一界面
图4 游戏二界面
2.5 详细见源程序 pintu.asm
三、详细设计
本人负责对游戏中记忆所走步数及步数和显示时间功能的实现。
在编写记忆所走步数及步数这一块代码的时候,通过查阅课外书,以及多次的调试,最
后将其表现在以下俩段代码中。遗憾的是在显示时间功能在编程过程中遇到了相当多的问
题,在小组成员的讨论后,经过多次调试,最后都没有像我们想象的那样表现出来。
3.1、体现在game1中,代码如下:
;*****************************************************************************
; code 1,子程序game
;***************************************************************************** CODE1 SEGMENT
ASSUME CS:CODE1,DS:DATA
GAME1 PROC FAR
PUSHJCQ
NEWGAME1: CALL FAR PTR CLEAR_SCREEN
MOV SI,OFFSET FILE_1
CALL FAR PTR DISPHEROS
DISP_STRING_TEXT NEWG,2,60,11,0DH
DISP_STRING_TEXT LEFT,3,60,RIGHT-LEFT,0DH
DISP_STRING_TEXT RIGHT,4,60,UP-RIGHT,0DH
DISP_STRING_TEXT UP,5,60,DOWN-UP,0DH
DISP_STRING_TEXT DOWN,6,60,TOPTEN-DOWN,0DH
;DISP_STRING_TEXT CLEAR,7,60,15,0DH
DISP_STRING_TEXT EXI,7,60,NEWG-EXI,0DH
;DISP_STRING_TEXT TOPTEN,10,60,6,04H
DISP_STRING_TEXT NA_STEP,11,60,NUMBERS1-NA_STEP,04H
DISP_STRING_TEXT XING,0,3,74,0DH