扫雷的课程设计报告
- 格式:docx
- 大小:24.15 KB
- 文档页数:20
c语言扫雷游戏课程设计一、课程目标知识目标:1. 让学生掌握C语言的基本语法和程序结构;2. 帮助学生理解二维数组的使用方法,灵活运用数组存储和处理扫雷游戏的数据;3. 引导学生掌握逻辑表达式和循环结构在游戏中的运用。
技能目标:1. 培养学生运用C语言编写简单游戏的能力;2. 提高学生分析问题、解决问题的能力,通过设计扫雷游戏,让学生学会分解复杂问题为简单问题,逐步解决;3. 培养学生团队协作和沟通能力,分组完成游戏设计。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生主动探索新知识的热情;2. 培养学生面对挑战时不怕困难,勇于尝试,持续改进的良好品质;3. 引导学生树立正确的价值观,尊重他人成果,学会分享与合作。
分析课程性质、学生特点和教学要求,本课程旨在通过设计扫雷游戏,让学生在实践过程中掌握C语言的基本知识和技能。
课程目标具体、可衡量,既注重知识技能的培养,又关注学生的情感态度价值观发展,为后续的教学设计和评估提供明确方向。
二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、控制结构(条件语句、循环语句);2. 二维数组的概念和使用方法,数组在扫雷游戏中的应用;3. 函数的定义和调用,模块化编程思想在游戏设计中的应用;4. 随机数的生成和运用,实现扫雷游戏的雷区布置;5. 逻辑表达式和条件判断,实现扫雷游戏的胜利判断和雷区展开;6. 排序算法和查找算法的应用,优化扫雷游戏的逻辑处理;7. 用户交互设计,实现扫雷游戏的输入输出界面;8. 游戏测试与调试,培养学生解决问题的能力;9. 团队协作与沟通,分组完成扫雷游戏的开发。
教学内容按照课本章节顺序进行,结合课程目标,确保学生能够系统地掌握C 语言编程知识。
教学大纲明确教学内容和进度,使学生在完成课程学习后,能够独立编写简单的扫雷游戏程序。
三、教学方法本课程将采用以下教学方法,以激发学生的学习兴趣和主动性,提高教学效果:1. 讲授法:教师通过生动的语言和实际案例,讲解C语言基础知识和扫雷游戏设计原理,帮助学生建立知识体系。
拓展课扫雷课程设计一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握扫雷的基本原理和方法,了解扫雷的历史和现状,提高对扫雷问题的认识水平。
技能目标要求学生能够运用所学的扫雷知识和方法,解决实际中的扫雷问题,提高解决问题的能力。
情感态度价值观目标要求学生在学习过程中,增强对生命的尊重和爱护,增强对和平的珍视和追求,形成积极向上的情感态度和价值观。
二、教学内容教学内容主要包括扫雷的基本原理、扫雷的方法、扫雷的历史和现状以及扫雷问题的解决。
首先,通过讲解和案例分析,使学生了解扫雷的基本原理和方法,掌握扫雷的基本技能。
其次,通过历史和现状的介绍,使学生了解扫雷问题的严重性和复杂性,提高学生对扫雷问题的认识水平。
最后,通过实际案例的分析和解决,使学生能够运用所学的知识和方法,解决实际中的扫雷问题。
三、教学方法在教学过程中,将采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
讲授法用于扫雷基本原理和方法的讲解,使学生能够系统地了解和掌握扫雷知识。
讨论法用于扫雷问题的讨论,激发学生的思考和主动性,提高学生的解决问题的能力。
案例分析法用于扫雷案例的分析和解决,使学生能够运用所学的知识和方法,解决实际中的扫雷问题。
实验法用于扫雷设备的操作和实验,使学生能够亲自体验和了解扫雷的过程和方法。
四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备等。
教材和参考书用于提供扫雷的基本知识和方法,多媒体资料用于提供扫雷的历史和现状的图片和视频,实验设备用于提供扫雷的实验操作的机会。
这些教学资源将帮助学生更好地了解和掌握扫雷知识,提高学生的扫雷能力。
五、教学评估本课程的评估方式包括平时表现、作业和考试等。
平时表现主要评估学生在课堂上的参与程度、提问和回答问题的表现。
作业主要评估学生的扫雷知识和方法的掌握程度。
考试主要评估学生对扫雷知识和方法的全面理解和掌握。
这些评估方式将客观、公正地全面反映学生的学习成果。
c语言扫雷课程设计总结一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握扫雷游戏的逻辑设计。
2. 学会使用C语言编写程序,实现扫雷游戏的界面显示、地雷布置、排查等功能。
3. 掌握数组的使用,利用二维数组存储扫雷游戏的数据。
技能目标:1. 培养学生运用C语言解决问题的能力,提高编程技巧。
2. 培养学生的逻辑思维能力,通过分析问题,设计出合理的算法。
3. 提高学生的动手实践能力,能够独立完成扫雷游戏的编写和调试。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习热情,增强自信心。
2. 培养学生的团队协作精神,学会与他人分享和交流编程经验。
3. 培养学生面对困难不退缩,勇于尝试和解决问题的积极态度。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为C语言编程实践课,旨在通过设计扫雷游戏,让学生掌握C语言的基本语法和应用。
2. 学生特点:学生已经具备一定的C语言基础,对编程有一定了解,但实践能力较弱。
3. 教学要求:注重理论与实践相结合,以学生为主体,充分调动学生的积极性,培养其编程兴趣和动手能力。
1. 熟练掌握C语言的基本语法和结构,能够独立编写扫雷游戏程序。
2. 提高逻辑思维能力和问题解决能力,能够分析并优化扫雷游戏的算法。
3. 增强团队协作意识,善于与他人分享和交流编程经验。
4. 培养良好的学习习惯,勇于面对挑战,积极解决问题。
二、教学内容1. C语言基础语法回顾:变量定义、数据类型、运算符、控制结构(包括顺序结构、分支结构、循环结构)。
2. 数组的使用:介绍一维数组、二维数组的概念和应用,以及数组在扫雷游戏中的使用。
3. 函数的定义与调用:重点讲解自定义函数的编写,如初始化游戏界面、布置地雷、排查地雷等。
4. 游戏逻辑设计:分析扫雷游戏的规则,设计游戏的数据结构,编写算法实现游戏逻辑。
5. 界面设计与实现:利用C语言库函数,实现扫雷游戏的图形化界面显示。
6. 程序调试与优化:介绍调试工具和技巧,指导学生进行程序调试,提高程序性能。
《JAVA程序设计》课程设计报告系别:计算机与电子系专业班级:计算机科学与技术0803班学生姓名:***指导教师:**(课程设计时间:2011年6月13日——2011年6月24日)华中科技大学武昌分校课程设计报告撰写内容、格式与成绩评定一、课程设计报告的撰写内容与要求1.课程设计总结报告应包括:前言、基本原理或理论、设计计算书或实验报告、结论、图纸(框图、流程图)、参考资料等;或调查、访谈报告、调查问卷、调查提纲等。
2.课程设计总结报告应书写工整,文句通顺、精炼、逻辑性强,图纸和曲线的绘制应符合规范。
3.调查型课程设计应根据调查结果撰写调查报告。
调查报告内容包括:题目、参加时间、地点、方式、过程、调查对象一般情况、调查内容、发现的问题、调查结果和调查分析及体会等。
调查报告要求语言简练、准确;叙述清楚、明白;数据、资料可靠;结论有理、有据。
4.图纸应布局合理,比例恰当,线条分明,字体工整,符合国家制图标准。
5.课程设计报告字数要求:理工、艺术类不少于2000字,其他专业不少于3000字。
二、课程设计成绩评定1.学生的课程设计成绩由平时成绩、业务考核成绩两部分组成,均为百分制记分,其中平时成绩占总成绩的30%,业务考核成绩占70%。
业务考核含设计报告(计算说明书、调查提纲、调查问卷等)、绘制的图纸、编制的软件、制作的模型、撰写的论文或问卷统计、调查分析等的完成及质量情况;平时成绩含设计表现、到课率等。
2. 教师按学生实际成绩(百分制,含平时成绩和业务考核成绩两部分)登记并录入教务MIS系统,由系统自动转化为“优秀(90~100分)、良好(80~89分)、中等(70~79分)、及格(60~69分)和不及格(60分以下)”五等。
目录1.课程设计目的 (1)2.课程设计题目描述和要求 (1)3.课程设计报告内容 (2)3.1总体设计 (2)3.2详细设计 (4)3.3编码实现 (9)3.4系统测试 (27)3.5系统运行 (27)4.总结 (30)参考文献 (31)1.课程设计目的本次课程设计的主要目的是为了通过具体的程序来加深对Java语言的掌握,提高自己的编程水平。
课 程 设 计扫雷游戏程序设计2013 年 11 月 5 日设计题目 学 号专业班级 学生姓名 指导教师合肥工业大学课程设计任务书一.设计任务(1)鼠标左击排雷,右击插小旗,打问号;(2)方格里面的数字表示方格周围的雷数;(3)能够显示未标记雷数和游戏用时;(4)雷区上面的小脸可以变化,显示微笑,惊讶,痛苦,胜利。
在任何情况下单击小脸可以重新开始游戏;(5)可进行游戏难度的设定:包括预定义的难度级别(雷区行数,列数和雷数),和自行定义雷区行数,列数和雷数的功能;(6)排行榜功能,扫雷成功时候,根据游戏用时更新排行榜。
二. 具体设计(一)、设计思路扫雷游戏是很经典也很有趣的一款游戏,这次的游戏程序设计要求设计出功能与原游戏相近的一款游戏,首先定义变量和类要画出游戏方格以及位图,设计游戏等级,等级越高方格越多雷数也越多;然后设置随机布雷以保证每次重新开始游戏都有不同的雷区地图;另外定义鼠标左击扫雷,左击标记周围埋雷情况,右击奇数次排雷偶数次取消上次排雷,以及扫雷第一次左击不能扫到雷。
(二)、设计表示:1、鼠标左击排雷,右击插小旗,打问号;2、方格里面的数字表示方格周围的雷数;3、能够显示未标记雷数和游戏用时;4、雷区上面的小脸可以变化,显示微笑,惊讶,痛苦,胜利。
在任何情况下单击小脸可以重新开始游戏;5、可进行游戏难度的设定:包括预定义的难度级别(雷区行数,列数和雷数);6、任何时候开始游戏第一次点击不会扫到雷。
由于时间等原因未完成功能:排行榜和自行定义雷区行数,列数和雷数功能。
(四)、详细设计1、添加位图前十二幅是在雷区的,后四幅是按钮。
为了便于加载,必须各自保证其连续性。
分别表示游戏进行的状态、结果胜利或触雷。
2、预设等级方格数雷数变化void CMywqq20112074View::OnEasy() /////////////////////////////初级{m_RowCount=10;//行数10m_ColCount=10;//列数10leinum=10;realnum=leinum;SetTimer(1,50,NULL);// TODO: Add your command handler code heresecond=0;//计时secondstart=0;//1时开始计时// num=0;leftnum=leinum;//剩余雷数jieshu=0;//jieshu=1时停止int aa=0;//初始化0for(int i=0;i<m_RowCount;i++){for(intj=0;j<m_ColCount;j++){lei[i][j].shumu=0;lei[i][j].weitu=0;}}//设置10个雷CMywqq20112074View::OnMiddle()//////////////////////////////////中级{m_RowCount=15;//行数15m_ColCount=15;//列数15leinum=40;realnum=leinum;SetTimer(1,50,NULL);// TODO: Add your command handler code heresecond=0;//计时secondstart=0;//1时开始计时// num=0;leftnum=leinum;//剩余雷数jieshu=0;//jieshu=1时停止int aa=0;//初始化0for(int i=0;i<m_RowCount;i++){for(intj=0;j<m_ColCount;j++){lei[i][j].shumu=0;lei[i][j].weitu=0;}}//设置40个雷void CMywqq20112074View::OnHard() ///////////////////////////////////////////高级{m_RowCount=25;//行数25m_ColCount=16;//列数16leinum=80;realnum=leinum;SetTimer(1,50,NULL);// TODO: Add your command handler code heresecond=0;//计时secondstart=0;//1时开始计时// num=0;leftnum=leinum;//剩余雷数jieshu=0;//jieshu=1时停止int aa=0;//初始化0for(int i=0;i<m_RowCount;i++){for(intj=0;j<m_ColCount;j++){lei[i][j].shumu=0;lei[i][j].weitu=0;}}//设置80个雷do{int k=rand()%m_RowCount;int l=rand()%m_ColCount;if(lei[k][l].shumu!=-1){lei[k][l].shumu=-1;aa++;}}while(aa!=leinum);3、第一次点击不会扫到雷if(lei[a][b].weitu==0||lei[a][b].weitu==3 ){for(;n==0&&lei[a][b].shumu==-1;)//////////////踩到第一个雷{int aa=0;//初始化0for(inti=0;i<m_RowCount;i++){for(intj=0;j<m_ColCount;j++){lei[i][j].shumu=0;lei[i][j].weitu=0;}}do{intk=rand()%m_RowCount;intl=rand()%m_ColCount;if(lei[k][l].shumu!=-1){lei[k][l].shumu=-1;aa++;}}while(aa!=leinum);//给方格赋值for(inta=0;a<m_RowCount;a++)for(intb=0;b<m_ColCount;b++)if(lei[a][b].shumu==0){for(int c=a-1;c<a+2;c++)for(int d=b-1;d<b+2;d++)if(c>=0&&c<m_RowCount&&d>=0& &d<m_ColCount)if(lei[c][d].shumu==-1)lei[a][b].shumu++;}}4、鼠标右击插小旗,打问号第一次用右键单击某个区域时,该区域上插上一面小红旗,此时单击左键没有任何变化,第二次用右键单击时恢复原状。
扫雷游戏课程设计报告整合《面向对象程序设计》课程设计报告题目:扫雷游戏设计院(系):计算机与电子系专业班级:计算机科学与技术0903班学生姓名: ============学号: ============指导教师: =======20 12 年 6 月 4 日至20 12 年 6 月 15 日华中科技大学武昌分校制面向对象程序设计课程设计任务书目录1需求与总体设计 (1)1.1需求分析 (1)1.2总体设计 (1)2详细设计.............................................................................................4 2.1M i n e G a m e 类 (4)2.2M i n e A r e a 类 (5)2.3B l o c k 类 (6)2.4B l o c k V i e w 类 (7)2.5L a y M i n e s 类 (8)2.6R e c o r d类 (8)2.7S h o w R e c o r d 类 (9)2.8u s e r D i f i n e 类 (9)3编码实现.............................................................................................11 3.1 MineGame类 (11)3.2 MineArea类 (14)3.3B l o c k 类 (17)3.4B l o c k V i e w 类 (18)3.5L a y M i n e s 类 (19)3.6R e c o r d 类 (20)3.7S h o w R e c o r d 类 (21)3.8u s e r D i f i n e 类 (24)4系统测试 (26)总结 (30)1需求与总体设计1.1需求分析1.1.1扫雷游戏概述扫雷是一种具有迷惑性的对记忆和推理能力的简单测试,它是长久以来最受欢迎的 Windows 游戏之一。
扫雷游戏毕业设计开题报告(一)引言概述:扫雷游戏是一款经典的益智游戏,它可以帮助玩家培养逻辑思维能力和分析问题的能力。
本文将介绍我的毕业设计开题报告,主题为扫雷游戏的设计与实现。
通过对该游戏的深入研究与分析,我将挖掘出游戏的核心功能和技术实现,并着重讨论算法的设计与优化,以提升游戏的用户体验。
本文将涵盖以下几个方面的内容:游戏的背景与意义、游戏的整体设计思路、游戏的基本功能、游戏的核心算法设计与优化、游戏的用户界面设计。
正文:一、游戏的背景与意义1. 扫雷游戏的起源和发展历史2. 扫雷游戏对玩家逻辑思维的培养作用3. 扫雷游戏在计算机科学中的应用价值二、游戏的整体设计思路1. 游戏目标的设定与规则制定2. 游戏的基本元素与交互方式3. 游戏难度的设定与平衡4. 游戏界面的整体布局与风格设计5. 游戏的用户反馈与成就系统设计三、游戏的基本功能1. 游戏开始与结束的逻辑实现2. 游戏面板的生成与显示3. 雷区与雷的随机分布4. 点击与标记雷的操作实现5. 游戏胜利与失败的判断及处理四、游戏的核心算法设计与优化1. 雷区的生成算法2. 标记雷的策略与优化3. 点击方块后的雷的判断与处理4. 游戏难度与地图的关系解析5. 算法的性能优化与效率提升五、游戏的用户界面设计1. 游戏界面的整体布局与风格设计2. 功能区域与操作方式的设计3. 游戏元素的图形化展示4. 用户交互的界面响应与反馈5. 用户界面的可定制化与改进总结:通过本文的开题报告,我将全面探讨扫雷游戏的设计与实现,深入剖析游戏的核心功能和算法设计。
通过本次毕业设计,我希望能够提高自己的编程能力和分析问题的能力,同时实现一个优秀的扫雷游戏,为用户提供良好的游戏体验。
在未来的研究与开发中,我将努力优化游戏的算法与功能,不断提升扫雷游戏的质量与用户满意度。
C语言扫雷课程设计报告1. 引言扫雷游戏是一款经典的单人益智游戏,通过在一个由方块组成的网格中,通过点击方块并根据周围方块的状态来逐步揭示地雷的位置。
本文档将介绍一个使用C语言实现的扫雷游戏。
2. 项目背景扫雷游戏是一个经典的Windows游戏,在Windows操作系统中自带有扫雷游戏,因此开发一个C语言版本的扫雷游戏可以提高学生对C 语言的学习兴趣,同时锻炼计算机编程能力。
3. 项目目标本项目的目标是实现一个具备基本功能的C语言扫雷游戏,包括以下特点:•游戏开始时,玩家输入游戏难度(即地雷数量和地图大小),按照输入的难度生成对应的地图。
•玩家通过输入坐标的方式来翻开方块,并根据周围地雷的数量显示提示信息。
•当玩家翻开一个地雷方块时,游戏结束,显示游戏失败信息。
•如果玩家成功翻开了所有的非地雷方块,则游戏胜利,显示游戏胜利信息。
4. 技术实现本项目将使用C语言实现扫雷游戏,主要涉及以下技术:•使用C语言的基本语法和数据结构,实现游戏逻辑和操作;•使用C语言中的文件操作,实现游戏的保存和读取功能;•使用C语言中的随机数生成函数,生成随机地雷的位置;•使用C语言的图形库(如ncurses)来实现游戏界面的显示。
5. 版本控制为了方便项目的维护和追踪,本项目将使用Git进行版本控制。
代码库将托管在GitHub上,方便多人协作和版本管理。
6. 开发计划本项目的开发计划如下:•第1周:学习C语言基础知识,熟悉C语言的基本语法和数据结构;•第2周:完成C语言扫雷游戏的框架搭建,包括游戏初始化、界面设计等;•第3周:实现游戏逻辑,包括地雷生成、方块翻开、胜利条件判定等;•第4周:优化游戏功能,增加保存和读取功能,完善游戏界面等;•第5周:完成文档撰写和项目总结。
7. 预期成果通过本项目的实现,预期可以达到以下成果:•培养学生对C语言的编程能力,加深对C语言的理解;•提高学生的逻辑思维和问题解决能力;•锻炼学生的团队协作和沟通能力;•了解和应用Git版本控制工具,提高代码管理和维护能力。
人工智能project报告学号:20091000608姓名:王沙沙班级:191091指导老师:赵老师2011年10月25目录1.自动扫雷 (3)需求分析 (3)游戏规则 (3)扫雷游戏设计 (3)自动扫雷设计 (5)用户手册 (5)运行结果 (6)结论 (7)主要算法代码 (7)1 自动扫雷1.问题描述、需求分析扫雷是Windows操作系统自带的桌面小游戏之一,由于其规则简单,长期以来一直受到电脑用户的欢迎。
自动扫雷是开始扫雷后根据扫雷规则利用计算机进行扫雷。
开始棋局,单击第一个按钮,因为执行第一个动作时所有按钮是雷的概率都相等,为了方便起见每次开局后都按下第一个按钮,如果不幸第一个按钮就是雷,那么单击--开始--重新开局。
2.游戏规则游戏界面如下图所示,游戏区域是由M X N个格子组成的“雷区”,左上方的数字显示雷区中未被标出的地雷的个数,右上方的数字显示用户从第一次点击开始所用的时间,单位是秒。
中间的图标指示游戏的状态(完成:笑脸;失败:哭脸)。
用户需要通过鼠标操作来确定雷区中所有地雷的位置:左键单击:尝试某个格子是否有地雷。
如果该格子下有地雷,则游戏失败·如果该格子下没有地雷但其周围八个格子下有地雷,该格子会显示其周围八个格子中地雷的个数;如果该格子下没有地雷且其周围八个格子下也没有地雷,则此处被挖开。
右键单击:改变某个格子是否有雷的标志(工)。
或左右键同时单击:当该格子周围已标地雷的个数与格子中的数字相同时,则挖开周围的其余格子。
当提示该格子周围已标地雷的个数少于格子;3.扫雷游戏设计每个格子有如下几种状态:{MS_NORMAL,MS_OPEN,MS_FLAG,MS_QUEST,MS_EXPLODE} MINESTATUS1)格子类共有变量如下:MINESTATUS m_nStatus;//格子状态int m_nMineNum;//格子周围的雷数,即格子上显示的数字CWnd *m_pParent;//父窗口int m_nX,m_nY; //按下按钮的横纵坐标成员函数SetStatus(MINESTATUS nStatus)//设置状态GetStatus()//获取状态SetMineNum(int nMineNum)//设置雷数GetMineNum() //获取雷数DrawItem(BOOL bFail=TRUE);//绘制格子2)布雷类共有变量如下int m_nRow,m_nCol;//棋盘有多少行多少列int m_nMineNum; //棋盘上的雷数int m_nX,m_nY; //棋盘的位置int m_nOldMine;int m_aMineTest[9];int m_nMineTest;CMineButton *m_aLandMine[10000]; //棋盘CWnd *m_pParent;成员函数Create(int nRow,int nCol,int nMineNum,int nX,int nY,CWnd *pParent);Reset(int nRow,int nCol,int nMineNum);//重新布局ReDraw(BOOL bFail);//刷新棋局LButtonDown(CPoint point);//左键按下BothButtonDown(CPoint point);//左键与右键同时按下RButtonDown(CPoint point);//右键按下MouseMove(CPoint point,int bBothDown);//鼠标移动LButtonUp(CPoint point);//左键弹起BothButtonUp(CPoint point);//左键与右键同时弹起OpenMine(int nCurMine);//开局函数IsSuccess(); //判断是否扫雷成功RndBtShdDn(int nCurMine);GetMineNum()//获取棋盘的雷数GetRight(int nCurMine)//获取四邻域的中心点像素正右方像素点的位置 GetLeft(int nCurMine)//获取四邻域的中心点像素正下左像素点的位置 GetTop(int nCurMine)//获取四邻域的中心点像素正上方像素点的位置GetBot(int nCurMine)//获取四邻域的中心点像素正下方像素点的位置3)布雷算法:首先定义一个n*n的二维数组,该数组的i-1到i+1,j-1到j+1除去i,j本身。
湖南文理学院课程设计报告课程名称:计算机课程扫地雷设计院系:电气与信息工程学院专业班级:通信09102班学生姓名:孔启浩指导教师:完成时间: 2010.9.27报告成绩:扫地雷游戏扫地雷游戏设计综述在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生活的一分,越来越多的人使用计算机办公、娱乐等等。
扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。
我利用Turbo C编写了与它功能相仿的扫雷游戏,寓学于乐。
一、应用环境1.1 硬件环境一台完整的电脑,包括键盘、鼠标,最小硬盘空间1GHz1.1及兼容机.640K基本内存;2.1 1M以上扩充内存,10M以上的显示内存.2.2 软件环境开发环境:本系统的设计采用的是TC语言开发Windows 操作系统,Turbo C 2.0汉化版二、程序的作用及设计目的2.1 程序功能程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。
单击屏幕上的笑脸可以重新开始游戏。
所有地雷标出后胜利,当鼠标左键单击到地雷时失败。
2.2 程序设计目的1.培养综合运用所学知识独立完成课题的能力。
2.更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。
3.提高对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
4.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
5.培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
6.对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
三、程序分析和设计3.1 游戏规则设计10×10格区域,单击鼠标后,该格显示数字,则表示它周围8 个空格内含有的地雷数,周围没有地雷的显示空白,则不能再单击了。
H a r b i n I n s t i t u t e o f T e c h n o l o g y课程设计报告课程名称: JAVA网络设计设计题目:扫雷游戏院系:电子班级:08设计者:学号:指导教师:辛明影设计时间: 2010,11,29一,题目分析扫雷游戏分析:●扫雷的基本原理九宫格中(3*3共九个格子),中间的数字代表其周围的地雷个数,即以中间数为中心所在地九格中共有中间那个数的地雷。
比如中间为1,那么以这个1为中心,其周围共八个空格中只有一个是地雷。
●扫雷的基本功能1) 开局:首先选择游戏等级,然后生成不同等级的雷区界面。
游戏等级分为三级:各等级方块数为——初级:9×9、中级:16×16、高级:24×24;自定义:X,各级地雷数分别为10,40,99;雷区每个方块下面或埋藏有1个地雷,或者没有地雷;2) 挖雷:鼠标点击方块,可挖开它;若所揭方块下有雷,则踩雷,此时所有含地雷的块都标记,该局游戏失败;如果方块上出现数字,它代表在它周围的8个方块中共有多少颗地雷;3) 标记地雷:在某个光标上点击鼠标右键,则标记此块下埋着地雷(实际上可能是误标),显示为F。
每标记一个地雷,地雷数减少1;4) 自动挖开:如果某个数字方块周围的地雷全都标记完,则自动将其剩下的方块挖开;5) 扩散:扫雷程序还会自动展开已确定没有雷的雷区。
如果a[3,4]周围雷数为1,a[2,3]已被标示为地雷,那么a[24],a[25],a[33],a[35],a[43],a[44],a[45]将被展开,一直波及到不可确定的雷区。
6) 游戏数据的记录:对于得分较高的玩家进行统计,保存在“mine.log”文件中。
7)用于记录游戏时间的独立线程,并在界面实时显示游戏时间。
7)总体设计开发环境:Windows Xp sp3+NetBeans IDE1.项目包的UML视图:图1-项目包视图项目由三个包组成:●saolei.game.mine 功能:这个包是游戏的核心,其中实现了主界面,核心算法,图片管理,等级记录等功能●saolei.awt 功能:实现LedNumber类,把数字格式化为液晶显示图片●saolei.swing 功能:实现 AboutDialog类,响应about事件。
课程设计报告课程:面向对象程序设计学号:姓名:班级:嵌入式应用技术教师:时间:2013年12月10日计算机科学与技术系设计名称:扫雷游戏日期:2013年1 1月30日设计内容:设计一个简单GUI界面的扫雷游戏。
扫雷游戏的规则如下:(1)在不掀开任何不藏有地雷的方块情况下,以最快的速度找出所有的地雷。
如果再掀开方块的过程中,不小心翻开藏有地雷的方块,则宣告失败,惟有将所有不含地雷的地方掀开,游戏才算成功法。
(2)游戏的操作方面主要以鼠标为主,当鼠标的指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标的指针对准未翻开的方块按下右键时即表示标示地雷。
游戏者可以通过地雷区内的数字提示了解以数字为中心的其其周边八个方格内所含的地雷数,假若翻开的方块显示数字“3”,则表示以其为中心的周边方块内藏有3个地雷。
(3)当按下的方块不是地雷,且周边的八个方块也没有地雷时,方块会以被翻开方块的八个方向将空白方块翻开。
设计目的与要求:一:基本要求(1) 扫雷游戏分为初级、中级和高级三个级别。
单击游戏菜单可以选择“初级”、“中级”和“高级”。
(2) 选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键选择单击‘“开始”便启动计时器。
(3) 用户要揭开某个方块,可左键单击它。
若所揭方块下有雷,用户便输了这一局,若所揭方块下无雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。
(4) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。
用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。
(5)当用户点中雷时,将有“你输了”的提示出现,胜利时,将有“你赢了”的提示出现。
二:实现功能(1)开局:首先选择游戏等级,然后生成不同等级的雷区界面。
游戏等级分为三级:各等级方块数为——初级:8×8、中级:16×16、高级:24×24;各级地雷数=总方块数/6;雷区每个方块下面或埋藏有1个地雷,或者没有地雷;(2)扫雷:将光标移到某个方块,使用鼠标的左右键进行扫雷;如果方块上出现数字,它代表在它周围的8个方块中共有多少颗地雷;(3)标记地雷:把光标光标移到有雷的某个方块上点击右键,标记此块下埋着地雷(实际上可能是误标,如果后面发现是误标再点击鼠标右键恢复标记前)。
西安文理学院信息工程学院课程设计报告设计名称:数据结构课程设计设计题目:实现一个N*M的扫雷游戏学生学号:1402130407专业班级:软件13级四班学生姓名:樊秀琳学生成绩:指导教师(职称):谢巧玲(讲师)课题工作时间:2015.6.22 至2015.7.3说明:1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个学生。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。
3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。
答辩由指导教师实施。
4、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设计的情况另行规定。
5、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。
信息工程学院课程设计任务书指导教师:院长:日期:2015年6月22日信息工程学院课程设计进度安排表学生姓名:樊秀琳学号:1402130407 专业:软件工程班级:13级四班指导教师签名:2014年6月22日成绩评定表学生姓名:樊秀琳学号:1402130407 专业:软件工程班级:13级四班摘要摘要:扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。
扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法设计和语言实现,如C,C++,VB,JAVA等。
我利用eclipse编写了与它功能相似的扫雷游戏,寓学于乐。
程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。
单击屏幕上的笑脸可以重新开始游戏。
所有地雷标出后胜利,当鼠标左键单击到地雷时提示游戏失败。
其功能类似于Windows操作系统自带的扫雷游戏。
论文首先介绍了进行该游戏课程设计的目的,然后是任务描述和设计的相关要求,最后是最重要的需求分析和设计方案。
**** 大学课程设计院系名称计算机科学与工程学院班级学生姓名学号时间 2011.07.14课程设计题目:扫雷游戏主要函数public:void DrawShell(CPaintDC& dc);void DrawMine(CPaintDC &dc);void DrawButton(CPaintDC &dc);void DrawNumber(CPaintDC &dc);void DrawTubiao(CPaintDC &dc);afx_msg void OnTimer(UINT nIDEvent);BOOL IsInMineArea(UINT row, UINT col);//判断是否在区域UINT GetAroundFlags(UINT row, UINT col);//获取周围旗子数UINT GetAroundNum(UINT row, UINT col);//获取周围雷数BOOL Victory();//判断胜负CMyWnd();virtual ~CMyWnd();//实现鼠标点击及移动的函数afx_msg void OnLButtonDown(UINT nFlags,CPoint point);afx_msg void OnRButtonDown(UINT nFlags,CPoint point);afx_msg void OnLButtonUp(UINT nFlags,CPoint point);afx_msg void OnRButtonUp(UINT nFlags,CPoint point);afx_msg void OnMouseMove(UINT nFlags,CPoint point);afx_msg void OnPaint();//菜单函数afx_msg void OnMemuStart();afx_msg void C_J();afx_msg void Z_J();afx_msg void G_J();afx_msg void OnMemuCustom();afx_msg void OnMemuMark();afx_msg void OnMemuColor();afx_msg void OnMemuSound();afx_msg void onhero();afx_msg void OnMemuExit();afx_msg void C_J(CCmdUI* pCmdUI);afx_msg void Z_J(CCmdUI* pCmdUI);afx_msg void G_J(CCmdUI* pCmdUI);afx_msg void OnMemuCustom(CCmdUI* pCmdUI);afx_msg void OnMemuMark(CCmdUI* pCmdUI);afx_msg void OnMemuColor(CCmdUI* pCmdUI);afx_msg void OnMemuSound(CCmdUI* pCmdUI);//弹出窗口函数afx_msg void OnMemuHelpList();afx_msg void OnMemuHelpFind();afx_msg void OnMemuHelpUse();afx_msg void OnMemuAbout();afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);afx_msg void OnInitMenu(CMenu* pMenu);afx_msg void OnMemuClose();afx_msg void OnMemuHero();afx_msg void OnMemuCheat();DECLARE_MESSAGE_MAP()public:void LoadWaveSrc();//加载声音void FreeWaveSrc();//释放声音void name();void LoadConfig();//加载文件void SaveConfig();//保存文件void ResetRecord();void LoadBitmap();void SetCheckedColor();void LayMines(UINT row, UINT col);//布雷void OpenAround(UINT row, UINT col);//扩展void ExpandMines(UINT row, UINT col);void DrawSpecialMine(UINT row, UINT col);void s_j(UINT row,UINT col);//双击void pz(UINT row,UINT col);void DrawDownNum(MINEWND* mine, UINT num);void SetCustom(int xNum, int yNum, int mNum);//自定义void csh();//初始化DECLARE_MESSAGE_MAP();数据类型及变量protected://程序中的一些控制变量int m_x;int p;int q;int cj;int zj;int gj;int zd_y;int t;MINEWND m_Mines[100][100]; // 表示雷区内的所有小方块的二维数组UINT m_uXNum; // X方向小方块个数UINT m_uYNum; // Y方向小方块个数UINT m_uMineNum; // 总的雷个数int m_nLeaveNum; // 剩余的雷个数UINT m_uSpendTime; // 游戏开始击到目前所花费的时间UINT m_uGameState; // 游戏状态UINT m_uTimer; // 定时器标识UINT m_uNewState; // 当前选中的小方块的状态UINT m_uLevel; // 当前游戏等级UINT m_cj; // 初级记录UINT m_zj; // 中级记录UINT m_gj; // 高级记录CString m_cm; // 初级记录保持者CString m_zm; // 中级记录保持者CString m_gm; // 高级记录保持者BOOL m_bLRBtnDown; // 是否为左右键同时按下BOOL m_bClickBtn; // 左键按下的时候鼠标是否位于按钮区域内BOOL m_bMarkful; // 是否能显示标记BOOL m_bColorful; // 是否彩色显示BOOL m_bSoundful; // 是否有声音CMenu * m_pSubMenu; // 子菜单CBitmap m_bmpMine; // 雷区背景图像CBitmap m_bmpNumber; // 数字背景图像CBitmap m_bmpButton; // 笑脸按钮背景图像CBrush m_brsBG; // 背景画刷对象COLORREF m_clrDark; // 各按钮的深色调COLORREF m_clrDark_1;RECT m_rcClient; // 客户区域UINT m_uBtnRect[3]; // 按钮框区域坐标数组UINT m_uBtnState; // 按钮状态UINT m_uNumRect[3]; // 数字框区域坐标数组(包括时间和雷个数) UINT m_uShellRcX[2]; // 内框以及边界的坐标X方向UINT m_uShellRcY[2]; // 内框以及边界的坐标Y方向MINEWND m_pMines[100][100]; // 表示雷区内的所有小方块的二维数组详细设计(程序段)1.初始化函数//初始化值void CMyWnd::csh(){cj=0;zj=0;gj=1;zd_y=0;LoadWaveSrc();m_bMarkful=true;m_bColorful=true;m_uLevel=LEVEL_ADV ANCE;p=1;m_uMineNum=30;m_x=0;t = 0;m_uTimer = 1;m_uSpendTime = 0;m_nLeaveNum=30;m_uBtnState=BUTTON_NORMAL;m_uXNum=30;//X方向的雷数m_uYNum=16;//Y方向的雷数m_uShellRcX[0]=510; //边界的坐标X方向m_uShellRcY[0]=376; //边界的坐标Y方向m_uShellRcX[1]=486; //内框的坐标X方向m_uShellRcY[1]=263; //内框的坐标Y方向}//初始化界面大小CMyWnd::CMyWnd(){LoadBitmap();LoadConfig();HMENU hMenu = LoadMenu(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDR_MENU1));CMenu mnu;csh();mnu.Attach(hMenu);this->Create(NULL,"扫雷",WS_SYSMENU | WS_CAPTION |WS_MINIMIZEBOX);this->SetMenu(&mnu);this->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON2), true);this->SetWindowPos(&wndTopMost,0,0,m_uShellRcX[0],m_uShellRcY[0],SWP_NOZORDER | SWP_NOMOVE | SWP_NOCOPYBITS);GetClientRect(&m_rcClient);LayMines(m_uXNum, m_uYNum);RECT rect;GetClientRect(&rect);m_uBtnRect[0] = rect.right / 2 - 12;m_uBtnRect[1] = rect.right / 2 - 13;m_uBtnRect[2] = rect.right / 2 + 12;}2. 左击函数调试分析能通过调试并能良好运行,遗憾的是还有些小问题。
西安文理学院信息工程学院 课程设计报告
设计名称: 数据结构课程设计 设计题目: 实现一个N*M的扫雷游戏 学生学号: 专业班级: 软件13级四班 学生姓名: 樊秀琳 学生成绩: 指导教师(职称): 谢巧玲(讲师) 课题工作时间:至 说明: 1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个学生。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。 3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。答辩由指导教师实施。 4、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设计的情况另行规定。 5、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。信息工程学院课程设计任务书 学生姓名 樊秀琳 学号 专业班级 软件工程13级四班 设计题目 实现一个N*M的扫雷游戏 内容概要:(包含要求采用的设计环境或开发环境(软、硬环境),采用的关键技术等),系统/设计所包含的基本功能等) 程序在eclipse
文献资料: [1]张跃平.JAVA2实用教程(第三版)[M].清华大学出版社,2006 [2]张跃平.JAVA课程设计(第二版)[M].清华大学出版社,2009 [3]叶核亚.数据结构(Java)(第二版)[M].电子工业大学出版社,2008
设计要求:(设计所必须达到的基本功能要求、文档格式要求及其他等)
工作期限:设计工作自2015年6月22日至201年7月3日止。 指导教师: 院长:
日 期:2015年6月22日 信息工程学院课程设计进度安排表 学生姓名: 樊秀琳 学号: 专业: 软件工程 班级: 13级四班 起止日期 内 容 备注
6月22日~ 6月 23日 下任务书;收集、阅读、整理相关参考文献,并进行归纳和概括总结,完成项目/任务背景介绍部分文字内容。 6月24日~6月26日 系统功能设计和模块设计、系统体系结构构建。 6月27日~6月30日 各功能模块编码实现,系统各功能模块调试与维护。
7月1日~7月2日 系统功能集成、系统调试与测试,按照模板要求撰写课程设计/项目设计报告。
7月3日 课程设计/项目设计分组答辩,提交课程设计/项目设计报告以及相关文档,进行成绩评定。
指导教师签名: 2014年6月22日成绩评定表 学生姓名: 樊秀琳 学号: 专业: 软件工程 班级: 13级四班 类别 合计 分值 各项分值 评分标准 实际得分 合计得分 平时表现 10 10 按时参加设计指导,无违反纪律情况。
完成情况 30 20 按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。
10 能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。
报告质量 35 10 报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。
5 课题背景介绍清楚,综述分析充分。 5 设计方案合理、可行,论证严谨,逻辑性强,具有说服力。 5 符号统一;图表完备、符合规范要求。 5 能对整个设计过程进行全面的总结,得出有价值的结论或结果。 5 参考文献数量在2篇以上,格式符合要求,在正文中正确引用。
答辩情况 25 10 在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15 在规定时间内能准确、完整、流利地回答教师所提出的问题。
总评成绩: 分 指导教师: (签字) 日期:2014 年7月 3 日 摘 要 摘要: 扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法设计和语言实现,如C,C++,VB,JAVA等。我利用eclipse编写了与它功能相似的扫雷游戏,寓学于乐。 程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。单击屏幕上的笑脸可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时提示游戏失败。其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了进行该游戏课程设计的目的,然后是任务描述和设计的相关要求,最后是最重要的需求分析和设计方案。重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解用户的意图,进而做出相对应的动作。清除未靠近地雷区的方块较为复杂。 关键词:算法设计;事件;Eclipse目 录 摘 要 --------------------------------------------------------------- 第一章 课题背景(或绪论、概述) ------------------------------------ 0 设计目的 ------------------------------------------------------- 0 基本理论依据和主要工作内容 -------------------------------------- 0 第二章 设计简介及设计方案论述 -------------------------------------- 1 功能需求 -------------------------------------------------------- 1 功能模块 -------------------------------------------------------- 1 第三章 详细设计 ---------------------------------------------------- 1 总体设计 ------------------------------------------------------- 1 --------------------------------------------- 错误!未定义书签。 主要技术 ------------------------------------------------------- 2 第四章 设计结果及分析 ---------------------------------------------- 3 设计结果截图 ---------------------------------------------------- 3 参考文献 ------------------------------------------------------------ 3 源代码 -------------------------------------------------------------- 4第一章 课题背景(或绪论、概述) 设计目的 1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。
2.培养学生综合运用所学知识独立完成课题的能力。 3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。 基本理论依据和主要工作内容 扫雷游戏主要用了一个10行10列的二维数组,刚开始利用random随机布雷。 每一个程序最主要的是算法。扫雷游戏算法的重点是一开始统计好每个格子周围有多少雷,当鼠标左键点在格子上时做出判断,如果周围8个格子有雷则显示出雷数,如果没有雷则显示空白格(在四个角的格子显示周围3个格子,其它边缘的格子显示周围5个的状态),我们在主函数中用两个for语句来判断周围雷数。我们还加了鼠标处理函数。 如果格子上有雷则调用函数actionpeformed (),显示“你踩到地雷了,按确定重来", "踩到地雷”,游戏结束。若所有的雷都标出,且所有的格子都处理过,则调用函数isWin (),显示“您挖完了所有的雷,您胜利了!", "胜利",游戏结束。游戏结束后,按任意键出去。 第二章 设计简介及设计方案论述 功能需求 1.本游戏结构较为简单,可以自行设置设置雷数,以此来控制扫雷的难度系数; 2.提示区下方将显示总雷数,并可以通过点击右键来标明疑似有雷的区域的数目; 3.单击鼠标左键于未知区域,如果未知区域有雷,游戏提示:“你踩到地雷了,按确定重来”;如果没有雷,当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数,则显示周围雷数,然后判断是否挖完所有的雷;如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止,并显示周围雷的数目; 4.单击鼠标右键于未知区域,则显示F,将其标识有雷。在该位置再次单击右键则视为不确定,显示Q,单击第三次,取消设置,Q消失; 5.如果该数字方块周围地雷已经完全标识出,双击该数字所在方块,将快速翻开所有周围不是地雷的方块,并显示,直到有雷为止; 6.将雷全部扫完后,会出现一个提示框,显示游戏胜利。 功能模块 (1)游戏界面 (2)布雷 (3)鼠标事件 (4)地雷判断 (5)游戏胜利(结束) (6)游戏失败(结束) (7)游戏设置(地雷数量) 第三章 详细设计
总体设计 游戏的操作方面主要以鼠标为主,当鼠标左键单击方块时即表示打开方块,当鼠标右键单击方块时即表示标识或疑似地雷,反复单击右键则方块会以“未标识→标识→疑似”三者关系不断循环。游戏者可以通过地雷区内的数字提示