扫雷课程设计报告.docx

上传人:b****5 文档编号:12095407 上传时间:2023-04-17 格式:DOCX 页数:57 大小:388.76KB
下载 相关 举报
扫雷课程设计报告.docx_第1页
第1页 / 共57页
扫雷课程设计报告.docx_第2页
第2页 / 共57页
扫雷课程设计报告.docx_第3页
第3页 / 共57页
扫雷课程设计报告.docx_第4页
第4页 / 共57页
扫雷课程设计报告.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

扫雷课程设计报告.docx

《扫雷课程设计报告.docx》由会员分享,可在线阅读,更多相关《扫雷课程设计报告.docx(57页珍藏版)》请在冰豆网上搜索。

扫雷课程设计报告.docx

扫雷课程设计报告

计算机学院计算机科学与技术专业

《程序设计综合课程设计》报告

(20010/2011学年第一学期)

 

学生姓名:

学生班级:

学生学号:

指导教师:

 

2011年  1月 8 日

第一章课程设计目的和要求

1.1程序设计目的

1.通过本课程设计,可以培养独立思考,综合运用所学知识的能力,能更好的巩固课程所学的内容,掌握工程软件设计的基本方法,强化上机编辑能力,闯过理论与实践结合的难关,更加了解c语言的好处和其可能性。

2.通过课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力,为后续各门计算机课程的学习和毕业设计打下基础。

3.上机实验目的,绝不仅是为了验证教材和讲课的内容,或者验证自己所编的程序正确与否。

学习程序设计,上机实验的目的是:

(1)加深对讲授内容的理解,尤其是一些语法和规定,光靠课堂讲授,既枯燥无味又难以记住,但他们是很重要的,初学者的程序出错往往错在语法上。

通过多次上机,就能自然的,熟悉的掌握。

通过上机来掌握语法规则是行之有效地方法。

(2)熟悉所用的计算机系统的操作方法,也就是了解和熟悉c++程序开发的环境。

一个程序必须在一定的外部环境下才能运行,所谓“环境”就是指所用的计算机系统的硬件和软件条件,或者说是工作平台。

使用者应该了解运行一个c++程序需要哪些必要的外部条件(例如硬件配置,软件配置),可以利用哪些系统的功能来帮助自己开发程序。

每一种计算机系统的功能和操作方法都是不完全相同的,但只要熟练掌握一两种计算机系统的使用,再遇到其它系统时便会触类旁通,很快的学会。

(3)学会上机调试。

也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确的运行。

经验丰富的人,在编译连接过程中出现“出错信息”时,一般能很快的判断出出错的原因所在,并改正之。

而缺乏经验的人即使在明确知道“出错提示”下也很难找出错误。

调试程序的能力是每个程序设计者应该掌握的一项基本功能。

1.2程序设计要求

1.查阅相关资料,自学具体课程中涉及到的新知识。

例如查阅谭浩强的C程序设计题解来编译代码

2.采用结构化,模块化程序设计方法设计,功能要完善,界面完美。

此部分的实现在如鹏论坛网上进行了查阅。

3.扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。

单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。

4.选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。

5.用户要揭开某个方块,可单击它。

6.如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。

7.扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。

1.3.软件系统概述

1.3.1开发的软件系统的题目:

扫雷游戏。

1.3.2运行环境:

WIN-TC.此运行环境里超级工具集自身就带点阵字模工具。

1.3.3功能:

我们的游戏可以玩扫雷。

1.3.4特点:

此游戏具有登录系统,可输入密码确保安全性,界面美观具有标题栏,菜单,难度选择,排行榜,游戏成功和失败都有不同的音乐和动画。

第二章程序设计任务内容

程序设计任务

1.程用户可以自定义级别并且可以任意输入雷数;

2.具有计时功能,即显示用户完成移动盘子所花费的时间;

3.用户可以选择是否有音效;

4.自动保存扫雷英雄榜;

基础上设计出符合自己所学要求范围内的程序。

2.2程序设计内容

(1)扫雷游戏首先是动画和音乐,音乐为真心英雄,接下来是进入登陆界面,首先是输入密码,密码是abc(可以改成任意9个字符),有三次输入机会,输入正确时继续输入姓名,输入错误密码时退出该系统,

(2)进入游戏界面,开始功能选择,有“菜单”“难度选择”和“排行榜”,菜单可以进行“开始”和“退出”功能选择,难度选择中有“易”“中”“难”三个选择。

(3)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。

(4)用户要揭开某个方块,可单击它。

若所揭方块下有泪,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。

(5)如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。

用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。

(6)扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。

(7)用户可以选择标记疑问的方块,用可以勾选游戏菜单下的标记(或者用快捷键alt+G然后M)即可,此时双击右键并可出现“?

”标记。

另有颜色选项,当用户勾选此项时,游戏将以最低图像像素来显示。

(8)如果用户需要即使提示声,并可选中声音选项,此时将听到计时的卡塔声。

当用户点中雷时,将有爆炸声产生,胜利时,将有凯旋的旋律播放,此时企鹅出现欢悦表情。

第三章详细设计说明

3.1模块描述

(1)首先是动画和音乐,音乐为真心英雄,接下来是进入登陆界面,首先是输入密码,密码是abc(可以改成任意9个字符),有三次输入机会,输入正确时继续输入姓名,输入错误密码时退出该系统,

(2)进入游戏界面,开始功能选择,有“菜单”“难度选择”和“排行榜”,菜单可以进行“开始”和“退出”功能选择,难度选择中有“易”“中”“难”三个选择。

(3)unionREGSinregs,outregs,regs2;//执行intr_num号中断,用户定义的寄存器值存于结构inregs,执行完后将返回的寄存器值存于结构outregs中。

扫雷棋盘的布局设计

系统的整体布局为:

采用了菜单、按钮、面板…等组件,菜单主要包括开始,选择级别,标记,扫雷英雄榜,退出,按钮的功能是重新开始新的游戏。

雷区的设计

1.根据参数提供的数据设置雷区的宽度、高度、雷的数目以及雷区的级别。

2.当用鼠标左键单击方块上的按钮后,若该方块下有雷,将使用户输掉本局,若该方块下无雷,将显示标签,该标签上是一个数字,该数字代表当前方块的周围的8个方块中共有多少颗雷。

3.inquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让对话框可见。

所谓扫雷成功是指不仅找到了全部的雷而且用时最少。

音效的设计

music是通过构造音效声音方法,在主类中,通过监视是否已开始游戏,来决定播放计时声,之后又通过监视是否踩到雷和是否完成来决定,播放相应的音乐。

排行榜设计

,当用户选择查看“英雄榜”菜单项时,提供了查看扫雷的最好成绩的界面。

3.2性能

1.第一部分主要是游戏动画和音乐,愉悦玩者的心情。

2.第二部分吧是密码登录系统。

使游戏具有安全性。

3.然后进入正式的游戏,

4.等级选择是,单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。

5.扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。

3.3输入项

本程序的输入项有

voiddeng_lu()//此函数为登陆界面函数,在开始音乐动画结束后出现,输入密码为abc

,有三次输入机会,输入正确时继续输入姓名,输入错误密码时退出该系统

3.4输出项

seviewport(0,0,619,429,0);//为图形输出设置当前窗口

Setviewport(0,0,619,429,0);/*为图形输出设置当前视口*/

Settextstyle(0,0,3,);/*为图形输出设置当前当前的文本属性横向和竖向,0为横向排列,1为竖向排列。

Size为字体大小:

可用interger做参数*/

outtextxy(118,178,welcometoplay”)//输出welcometoplay

3.5流程逻辑

1.主函数

2.游戏使用流程图

3.游戏使用流程图

4.音效设计流程图

排行榜设计流程图

 

3.6接口

while(!

bioskey

(1))//直接使用BIOS服务的键盘接口

int86(0x33,&inregs,&outregs);//调用鼠标中断,通用8086软终端接口,

3.7数据文件存储说明

intre[10][6]//储存鼠标经过前的像素颜色

tx2=regs2.x.cx;//cx寄存器中存的是横坐标

ty2=regs2.x.dx;//dx寄存器中存的是列坐标

for(j=0;j<10;j++)//储存鼠标一定范围内的像素颜色

3.8注释设计

详见程序清单。

3.9限制条件

goto语句中遇到错误

3.10测试计划

如果游戏参赛者没有按照提示输入密码,系统会默认为是错误信息,会提示用户重新输入。

第四章程序使用说明

程序使用说明如下:

游戏开始伴随着音乐进入动画界面如下:

动画结束后进入登陆界面:

密码登陆成功后进入游戏界面如下:

开始

最后进入菜单界

游戏胜利

扫雷英雄排行榜效果图

第五章程序设计心得与体会

课题的设计工作完成后,基本上符合了实验要求。

具有登陆界面,可以用密码来保证安全,还有标题栏,选择菜单,菜单中有开始与退出,难度选择和排行榜。

游戏失败后会有失败的音乐动画,成功后会有胜利的音乐与动画,打破记录是可以把分数与姓名存入磁盘。

但缺点是登陆后没有对话框,不能在图形模式下输入姓名。

这个扫雷游戏是完全模拟微软系统自带的扫雷游戏,所以难度是比较大了,必然在编程过程中也遇到很多问题,有些问题比较简单但就不知道错在哪里,有些大问题之道在哪就是不知道怎么办才好,后来经过自己的不断调试,这个扫雷游戏终于大功告成。

首先,通过这次课程设计使我感觉到知道的知识太少,课本上学的只是基础,要想成为一个编程人员,就得自己不断的积累积累在积累,把可以利用的资源都用上,如图书馆,上网查资料。

尽量多学,不白过大学的每一天。

经过编写这个扫雷游戏,我认识到应该注意细节问题,虽然是很小的问题,但可以提高自己编程的能力,而且还可以培养自己编程的严谨性,同时还可以为以后的编程积累经验。

编写完这个扫雷游戏,我发现自己有很多的不足,我想如果让我来单独来编写这个游戏,我感觉很吃力,因为这个游戏涉及到好多算法。

感触最深的就是我们真的要扎扎实实的打基础!

并且我感觉到只要我们自己肯下功夫学习,我们也可以做出很好的东西,不需要每次都抄袭别人的,只有自己的才是最珍贵的!

附录1参考文献:

1)谭浩强,C程序设计题解与上机指导(第二版),北京,清华大学出版社,2000年9月。

2)如鹏论坛网。

附录2程序清单

#include

#include

#include

#include

#include

#include

structpeople

{

charname[20];

floattime;

}peo[3]={{"noname",999},{"noname",999},{"noname",999}};

intm_poly[8]={0,0,5,7,0,9,0,0};/*鼠标,根据参数产生一个多项式*/

intm_now_poly[8]={0,0,5,7,0,9,0,0};

intre[10][6];/*储存鼠标经过前的像素颜色*/

intm_s[93-40+1][52-2+1];/*全局的变量*/

intn1=-1,n2=-1;

inthard=1;/*0:

易1:

中2:

难*/

intcount=40;/*地雷数量*/

intmx=16,my=16;/*地图宽度*/

charmap[16][30];/*0位存放在是否有地雷,1有0无,1位存放是否打开,1打开0没有打开,2位表示是否插旗,1有0无*/

intha_x=320-120,ha_y=240-100;/*游戏栏*/

intdead=0;/*1:

死亡2:

生*/

intscore=0;

intnn=1;

charp[20];

time_tfirst,second;

FILE*fp;

voidmenu_window();

voidinterrupt(*hanlder)();

voidinterruptmusic();

intfr1[]={262,262,262,262,294,330,440,392,330,392,392,392,

523,523,523,523,523,523,330,330,392,523,523,523,523,523,

392,392.392,330,330,294,262,294,294,294,294,294,294,294,330,294,262,294,

262,262,262,262,294,330,440,392,330,392,392,523,523,523,523,523,

523,330,440,3892,392,523,523,523,523,523,440,392,392,440,330,

330,294,262,262,294,294,294,330,330,392,294,330,262,262};

inttim1[]={8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,

8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,

8,8,8,8,8,4,4,8,8,8,4,4,8,8,8,8,8,8,

8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8};

intfr2[]={392,392,392,392,330,349,392,494,440,440,440,440,349,440,392,392,392,392,392,392,494,440,349,349,0,

349,349,349,349,330,294,262,262,0,523,523,523,523,392,440,523,523,659,578,578,578,578,523,494,440,440,

494,494,494,494,494,523,587,392,0,494,494,523,587,523,494,523,523};

inttim2[]={4,4,4,4,4,4,8,8,4,4,4,4,4,4,8,8,4,4,4,4,4,4,8,8,4,

4,4,4,4,4,2,8,8,4,4,4,4,4,4,4,8,4,8,4,4,4,4,2,4,8,8,

4,4,4,4,4,4,8,8,4,4,4,4,4,4,4,8,8};

charsao16k[]={

/*以下是‘扫’的16点阵楷体_GB2312字模,32byte*/

0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,

0x0C,0x3C,0x79,0xC4,0x08,0x04,0x0C,

0x19,0xC8,0x28,0x08,0xC8,0x08,0x08,0x78,

0x1B,0x80,0x80,0x00,0x00,0x00,0x00,0x00,

};

charlei16K[]={

/*以下是‘雷’的16点阵楷体字模,32byte*/

0x01,0xC0,0x0E,0x00,0x03,0xF8,0x3E,0x0C,

0x22,0x50,0x4A,0x00,0x02,0x40,0x0A,0x00,

0x01,0xE0,0x1E,0x20,0x13,0xA0,0x16,0x20,

0x0b,0xA0,0x0E,0x60,0x00,0x00,0x00,0x00,

};

charyou12S[]={

/*以下是‘游’的12点阵宋体字模,24byte*/

0x91,0x00,0x49,0xE0,0x3E,0x00,0x93,0xE0,

0x5C,0x40,0x54,0x80,0x55,0xE0,0x94,0x80,

0x94,0x80,0xA4,0x80,0x4D,0x80,0x00,0x00,

};

charxi12S[]={

/*以下是‘戏’的12点阵宋体字模,24byte*/

0x02,0x80,0xF2,0x40,0x12,0x40,0x13,0xE0,

0x9E,0x00,0x52,0x40,0x22,0x80,0x31,0x00,

0x49,0x20,0x42,0xA0,0x8C,0x60,0x00,0x00,

};

charkai12S[]={

/*以下是‘开’的12点阵宋体字模,24byte*/

0x00,0x40,0x7A,0xE0,0x1,0x00,0x1,0x00,

0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,

0x11,0x00,0x21,0x00,0xC1,0x0,0x00,0x00,

};

charju2S[]={

/*以下是‘局’的12点阵宋体字模,24byte*/

0x3F,0xC0,0x20,0x40,0x3F,0xc0,0x20,0x00,

0x3F,0xE0,0x20,0x20,0x2F,0x20,0x29,0x20,

0x4F,0x20,0x49,0x20,0x80,0xC0,0x00,0x00,

};

chartui12S[]={

/*以下是‘退’的12点阵宋体字模,24byte*/

0x8F,0xC0,0x48,0x40,0x4F,0xC0,0x08,0x40,

0xCF,0xC0,0x48,0x00,0x4b,0x40,0x48,0x80,

0x4E,0x40,0xB0,0x00,0x8F,0xE0,0x00,0x00,

};

charchu12S[]={

/*以下是‘出’的12点阵宋体字模,24byte*/

0x04,0x00,0x44,0x40,0x44,0x40,0x44,0x40,

0x7F,0xC0,0x04,0x00,0x44,0x40,0x44,0x40,

0x44,0x40,0x44,0x40,0x7F,0xC0,0x00,0x00,

};

charnan12S[]={

/*以下是‘难’的12点阵宋体字模,24byte*/

0x02,0x80,0x02,0x80,0xF7,0xE0,0x14,0x80,

0x9F,0xE0,0x54,0x80,0x24,0x80,0x27,0xE0,

0x54,0x80,0x94,0x80,0x07,0xE0,0x00,0x00,

};

chardu12S[]={

/*一下是‘度’的12点阵宋体字模,24byte*/

0x02,0x00,0x7F,0xE0,0x48,0x80,0x7F,0xE0,

0x48,0x80,0x4F,0x80,0x40,0x00,0x5F,0x80,

0x45,0x00,0x87,0x00,0xB8,0xE0,0x00,0x00,

};

charyi12S[]={

/*以下是‘易’的12点阵宋体字模,24byte*/

0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,

0x3F,0x80,0x10,0x00,0x3F,0xC0,0xC9,0x40,

0x12,0x40,0x64,0x40,0x19,0x80,0x00,0x00,

};

charzhong12S[]={

/*以下是‘中’的12点阵宋体字模,24byte*/

0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,

0x44,0x40,0x44,0x40,0x7F,0xC0,0x04,0x00,

0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,

};

charpai12S[]={

/*以下是‘排’的12点阵宋体字模,24byte*/

0x22,0x80,0x22,0x80,0xFE,0xE0,0x22,0x80,

0x32,0x80,0x6E,0xE0,0xA2,0x80,0x3E,0xE0,

0x22,0x80,0x22,0x80,0xE2,0x80,0x00,0x00,

};

charhang12S[]={

/*以下是‘行’的12点阵宋体字模,24byte*/

0x2F,0xC0,0x20,0x00,0x40,0x00,0x9F,0xE0,

0x20,0x80,0x60,0x80,0xA0,0x80,0x20,0x80,

0x20,0x80,0x20,0x80,0x27,0x80,0x00,0x00,

};

chardash16S[]={

/*以下是‘_’的16点阵宋体字模,32byte*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

charzhi16K[]={

/*以下是‘制‘的16点阵楷体字模,32byte*/

0x00,0x40,0x08,0x40,0x08,0x08,0x08,0x9C,

0x11,0xE0,0x31,0x40,0x52,0x40,0x94,0x78,

0x10,0x40,0x10,0x40,0x10,0x78,0x10,0x40,

0x10,0x40,0x00,0x40,0x00,0x40,0x00,0x00,

};

charcheng16K[]={

/*以下是‘成’的16点阵楷体字模,32byte*/

0x02,0x00,0x02,0x20,0x02,0x10,0x01,0x00,

0x10,0xE0,0x1F,0x00,0x11,0x10,0x10,0x90,

0x1E,0xA0,0x12,0x40,0x22,0x40,0x2A,0xA2,

0x45,0x12,0x80,0x0A,0x00,0x06,0x00,0x00,

};

charyuan16K[]={

0x03,0xC0,0x0C,0x40,0x09,0xC0,0x0E,0x00,/*以下是‘员’的16点阵楷体字模,32byte*/

0x00,0xE0,0x0F,0x20,0x08,0x20,0x09,0x20,

0x09,0x20,0x09,0x20,0x09,0x20,0x02,0x80,

0x04,0x40,0x08,0x30,0x70,0x10,0x00,0x00

};

charmao16S[]={

/*以下是‘:

’的16点阵宋体字模,32byte*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,

0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,

};

voidinterruptmusic()

{staticintflag=0,note=0,fre,dur;

if(flag>=(int)(d

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1