java扫雷游戏计算机毕业设计中期检查表、中期报告

合集下载

JAVA课程设计扫雷小游戏

JAVA课程设计扫雷小游戏

Java游戏设计报告院系计算机科学学院班级计科11002姓名张林峰设计日期2012.12.18—2012.12.291·设计内容及要求1.1·扫雷小游戏的基本要求扫雷小游戏主要采用Java语言编写,适合windows XP以下的系统,以eclipse 为平台。

具体要求如下:<1>扫雷小游戏分为初级、中级和高级三个级别,扫雷排行榜保存着每个级别的最好成绩,即挖出全部的地雷并且用时最少。

单机游戏菜单选择“初级”、“中级”和“高级”。

<2>游戏默认的是初级级别,用户可以选择不同级别将出现对应级别的扫雷区域,单击扫雷区域任一方格以便启动计时器。

<3>用户选择某个方格,单击它就行。

若所选择的放阁下有雷,这一局就结束了,若所选择方格下无雷,则会显示一个数字,该数字代表方格周围8个方格中共有几颗雷。

<4>如果用户认为某个方格下有雷,单击右键可以在方格上标记一个用户认为是雷的图标(一个小旗子)。

<5>用户可以选择标记为疑问的方格,可以选择游戏菜单下的标记,或者双击右键所选方格显示(?)图标。

<6>扫雷完成后,程序弹出保存成绩的对话框,用户可以根据自身选择是否保存。

<7>如果用户喜欢有提示音,可以选择游戏菜单中的声音选项,单击扫雷区域任一方格,就会听到吧嗒声。

当点中地雷时,将会有爆炸声音响起,胜利后,将播放凯旋的旋律。

1.2需求实现的主要功能(1)该游戏具有计时功能,即扫完全部地雷所花费的时间。

(2)用户可以选择是否有音效。

(3)用户可以自定义级别,还可以输入任意地雷数。

(4)自动保存扫雷排行榜。

2·需求分析2.1扫雷区域的布局设计系统的整体布局为:CardLayout布局,采用菜单、按钮、面板……等组件,菜单项主要有开始,选择级别,自定义,标记,声音,扫雷排行榜,退出,按钮的功能是重新开始游戏(可以选择游戏菜单里的开局,也可以点击企鹅图标重新开始游戏)。

java 扫雷 实验报告

java 扫雷 实验报告

java 扫雷实验报告Java 扫雷实验报告一、引言扫雷是一款经典的单人益智游戏,玩家需要根据数字提示,在雷区中揭开没有地雷的方块,同时避免触雷。

本实验旨在使用Java语言实现一个简单的扫雷游戏,并对实现过程和结果进行分析和总结。

二、实验过程1. 游戏界面设计使用Java的图形用户界面(GUI)工具包Swing,设计了一个扫雷游戏的界面。

界面包括一个方格矩阵,每个方格可以是未揭开、揭开、标记地雷三种状态之一。

同时,界面上显示了剩余地雷数量和游戏时间。

2. 游戏逻辑实现通过编写Java代码,实现了扫雷游戏的逻辑。

主要包括以下几个方面:- 初始化雷区:根据用户输入的难度级别,生成对应大小的雷区,并在其中随机布置地雷。

- 揭开方块:当玩家点击某个方块时,根据该方块周围的地雷数量,显示对应的数字或触雷。

- 标记地雷:当玩家认为某个方块是地雷时,可以标记该方块,以便后续操作时不会误触雷。

- 游戏结束判断:当玩家揭开所有没有地雷的方块时,游戏胜利;当玩家触雷时,游戏失败。

3. 用户交互设计为了提升用户体验,实现了以下交互设计:- 鼠标左键点击方块:揭开方块或触雷。

- 鼠标右键点击方块:标记地雷或取消标记。

- 双击方块:自动揭开周围未标记的方块,如果周围已标记地雷数量与方块上的数字相等。

三、实验结果经过实验,我们成功实现了一个简单的Java扫雷游戏。

游戏界面美观,操作流畅,能够满足基本的游戏需求。

玩家可以根据自己的喜好选择不同的难度级别,挑战不同规模的雷区。

四、实验总结通过这个实验,我们深入理解了Java语言的面向对象特性和图形用户界面的设计思想。

同时,我们学会了如何将一个复杂的问题分解为多个小问题,并通过合理的设计和编码实现整体功能。

在实验过程中,我们也遇到了一些挑战,比如如何处理用户输入、如何判断游戏是否结束等。

通过不断思考和尝试,我们最终找到了解决方案,并取得了满意的结果。

在今后的学习和工作中,我们将继续深入学习Java语言和相关技术,提升自己的编程能力。

java 扫雷 实验报告

java 扫雷 实验报告

java 扫雷实验报告
《Java 扫雷实验报告》
摘要:
本实验利用Java编程语言实现了一个简单的扫雷游戏,并对游戏的性能进行了测试和分析。

通过实验发现,使用Java语言编写的扫雷游戏在性能和用户体验方面表现良好,能够满足一般玩家的需求。

1. 引言
扫雷是一款经典的单人益智游戏,玩家需要根据数字提示来判断雷的位置,然后进行标记或清除。

本实验旨在利用Java编程语言实现一个简单的扫雷游戏,并对其性能进行测试和分析。

2. 实验方法
首先,我们使用Java语言编写了一个扫雷游戏的基本框架,包括游戏界面、游戏逻辑和用户交互等部分。

然后,我们利用性能测试工具对游戏进行了性能测试,包括内存占用、CPU占用和响应速度等指标。

3. 实验结果
通过性能测试,我们发现使用Java编写的扫雷游戏在内存占用方面表现良好,平均占用内存不超过100MB。

在CPU占用方面,游戏在运行时的平均CPU占用率不超过20%,并且响应速度较快,基本没有卡顿现象。

4. 实验讨论
根据实验结果,我们可以得出结论:使用Java编程语言实现的扫雷游戏在性能和用户体验方面表现良好,能够满足一般玩家的需求。

同时,我们也发现一些优化的空间,比如进一步减小内存占用、优化游戏界面等。

5. 结论
本实验利用Java编程语言实现了一个简单的扫雷游戏,并对游戏的性能进行了测试和分析。

通过实验发现,使用Java语言编写的扫雷游戏在性能和用户体验方面表现良好,能够满足一般玩家的需求。

希望本实验能够为Java游戏开发提供一些参考和借鉴。

计算机,网页设计,毕业设计中期检查报告

计算机,网页设计,毕业设计中期检查报告

30%
添加文本 添加文本 添加文本 添加文本
10%
25%
添加文本 添加文本
7%
在这里输入您的详细研究信息,在这里输入您的详细研究信息,在这里输入您的详细研究信息,在这里输入您的详细
研究信息,在这里输入您的详细研究信息,在这里输入您的详细研究信息,在这里输入您的详细研究信息。
总结:计算机,网页设计,毕业设计中期检 查报告
计算机,网页设计,毕业设计中期检查报告工作内容阐述: 160730
• 添加相关内容: • 379728计算机,网页设计,毕业设计中期检查报告计算机,网 页设计,毕业设计中期检查报告 • 342547计算机,网页设计,毕业设计中期检查报告计算机,网 页设计,毕业设计中期检查报告计算机,网页设计,毕业设计 中期检查报告 282154计算机,网页设计,毕业设计中期检查 报告计算机,网页设计,毕业设计中期检查报告计算机,网页 设计,毕业设计中期检查报告
计算机,网页设计,毕业设计中期检查报告工作内容阐述: 157920
• 添加相关内容: • 897678计算机,网页设计,毕业设计中期检查报告计算机,网 页设计,毕业设计中期检查报告 • 10130计算机,网页设计,毕业设计中期检查报告计算机,网 页设计,毕业设计中期检查报告计算机,网页设计,毕业设计 中期检查报告 365097计算机,网页设计,毕业设计中期检查 报告计算机,网页设计,毕业设计中期检查报告计算机,网页 设计,毕业设计中期检查报告
现状与研究目标
国内现状研究
在这里添加您的研究内容主题
在这里输入您的详细研究信息,在这里输入您的详
细研究信息,在这里输入您的详细研究信息,在这 里输入您的详细研究信息,在这里输入您的详细研 究信息,在这里输入您的详细研究信息。

java扫雷毕业设计

java扫雷毕业设计

java扫雷毕业设计Java扫雷毕业设计近年来,计算机科学与技术领域的发展迅猛,人们对于计算机程序的需求也越来越高。

作为一门广泛应用于软件开发的编程语言,Java在这个领域中扮演着重要的角色。

在学习Java的过程中,毕业设计是一个不可或缺的环节。

在这篇文章中,我将探讨一个有趣而且具有挑战性的毕业设计主题——Java扫雷。

一、背景介绍扫雷是一款经典的单人电脑游戏,最早出现在1989年的Windows系统中。

游戏的目标是在一个方格矩阵中找出所有的地雷,而不触发任何地雷。

玩家需要根据已翻开的格子周围的数字提示,推测出未翻开的格子是否有地雷。

扫雷游戏不仅考验玩家的逻辑思维和推理能力,也是一种很好的放松和娱乐方式。

二、设计思路在进行Java扫雷毕业设计时,我们需要考虑以下几个方面:1. 游戏界面设计:设计一个美观、直观的游戏界面,包括方格矩阵、计时器、剩余地雷数量等元素。

可以使用Swing或JavaFX等GUI库来实现。

2. 游戏逻辑设计:根据游戏规则,编写逻辑代码来实现游戏的进行。

包括生成地雷分布、计算周围地雷数量、判断游戏胜负等功能。

3. 用户交互设计:实现用户与游戏的交互,包括点击格子翻开、标记地雷、取消标记等操作。

可以使用鼠标事件监听器来实现。

4. 游戏难度设计:提供不同难度级别的游戏选择,包括初级、中级和高级。

不同级别的游戏难度可以通过改变地雷数量和方格矩阵大小来实现。

5. 计分系统设计:设计一个计分系统,根据游戏时间和标记地雷数量等因素来评估玩家的成绩。

可以在游戏结束时显示玩家的得分。

三、实现步骤在进行Java扫雷毕业设计时,可以按照以下步骤逐步实现:1. 创建游戏界面:使用GUI库创建游戏界面,包括方格矩阵、计时器、剩余地雷数量等元素。

2. 生成地雷分布:编写代码生成地雷分布,根据游戏难度确定地雷数量和方格矩阵大小。

3. 计算周围地雷数量:根据已生成的地雷分布,计算每个方格周围的地雷数量,并在界面上显示。

java扫雷游戏毕业设计

java扫雷游戏毕业设计

java扫雷游戏毕业设计Java扫雷游戏毕业设计在计算机科学与技术领域,毕业设计是学生完成学业的重要环节之一。

毕业设计不仅考验学生的专业知识和技能,还要求学生能够运用所学知识解决实际问题。

在这篇文章中,我将介绍一个有趣且具有挑战性的毕业设计主题:Java扫雷游戏。

Java扫雷游戏是一款经典的益智游戏,它的规则相对简单,但是却需要玩家具备一定的逻辑思维和推理能力。

在游戏中,玩家需要揭开方块,而每个方块下面都可能隐藏着雷。

玩家需要根据已揭开的方块周围的数字提示来推测雷的位置,并用旗帜标记出来。

游戏的目标是揭开所有非雷方块,而不触雷。

在设计Java扫雷游戏的过程中,首先需要考虑的是游戏界面的设计。

一个好的游戏界面应该直观、美观且易于操作。

可以使用Java的图形界面库,如Swing或JavaFX来实现游戏界面。

界面的布局应该清晰,方便玩家揭开方块和标记雷。

接下来,需要考虑的是游戏逻辑的设计。

游戏逻辑包括方块的生成、雷的分布、数字提示的计算等。

可以使用面向对象的思想,设计方块类、雷类和游戏类等。

方块类可以包含方块的状态(揭开、标记、未揭开)、周围雷的数量等属性。

雷类可以包含雷的位置信息。

游戏类可以包含游戏的状态(进行中、胜利、失败)、方块的生成和揭开等方法。

除了游戏界面和逻辑的设计,还可以考虑一些额外的功能来增加游戏的趣味性和挑战性。

例如,可以添加计时器来记录玩家完成游戏所用的时间,以及一个排行榜来展示最快完成游戏的玩家。

还可以添加不同的难度级别,如初级、中级和高级,每个级别的雷的数量和方块的大小可以不同。

在实现Java扫雷游戏的过程中,还可以运用一些算法和数据结构来提高游戏的效率和性能。

例如,可以使用二维数组来表示游戏界面,使用深度优先搜索算法来揭开方块和计算数字提示。

还可以使用队列或栈来实现雷的分布算法,确保每次游戏都有一个合理的雷的分布。

除了设计和实现Java扫雷游戏,还可以考虑一些拓展和改进的方向。

Java课程设计报告-扫雷小游戏

Java课程设计报告-扫雷小游戏

JAVA语言课程设计报告题目:扫雷小游戏设计者:专业班级:学号:指导教师:2011年12月12日计算机学院目录:1.设计内容及要求 (1)1.1.扫雷小游戏的基本要求 (1)1.2 需求实现的主要功能 (1)2.需求分析 (1)2.1 扫雷区域的布局设计 (1)2.2 雷区的设计 (1)2.3 音效的设计 (1)3.总体设计 (2)3.1总体功能图 (2)3.2游戏设计流程图 (2)4.主要功能设计 (3)4.1 雷区设计流程图 (3)4.2 音效设计流程图 (4)4.3 排行榜设计流程图 (5)5.代码实现 (6)5.1 类之间的关系图 (6)5.2 各界面图及代码: (6)5.2.1 游戏菜单界面 (6)5.2.2 游戏登录界面(初级、中级、高级) (8)5.2.3自定义扫雷界面 (15)6.扫雷总结 (18)7.参考文献 (18)1·设计内容及要求1.1·扫雷小游戏的基本要求扫雷小游戏主要采用Java语言编写,适合windows XP 以下的系统,以eclipse 为平台。

具体要求如下:<1>扫雷小游戏分为初级、中级和高级三个级别,扫雷排行榜保存着每个级别的最好成绩,即挖出全部的地雷并且用时最少。

单机游戏菜单选择“初级”、“中级”和“高级”。

<2>游戏默认的是初级级别,用户可以选择不同级别将出现对应级别的扫雷区域,单击扫雷区域任一方格以便启动计时器。

<3>用户选择某个方格,单击它就行。

若所选择的放阁下有雷,这一局就结束了,若所选择方格下无雷,则会显示一个数字,该数字代表方格周围8个方格中共有几颗雷。

<4>如果用户认为某个方格下有雷,单击右键可以在方格上标记一个用户认为是雷的图标(一个小旗子)。

<5>用户可以选择标记为疑问的方格,可以选择游戏菜单下的标记,或者双击右键所选方格显示(?)图标。

<6>扫雷完成后,程序弹出保存成绩的对话框,用户可以根据自身选择是否保存。

java课程设计扫雷游戏总结

java课程设计扫雷游戏总结

java课程设计扫雷游戏总结一、课程目标知识目标:1. 学生能理解Java语言面向对象编程的基本概念,掌握类与对象的定义、属性和方法的使用。

2. 学生能运用数组管理二维空间数据,实现对扫雷游戏地图的表示与处理。

3. 学生能掌握异常处理机制,提高程序的健壮性。

技能目标:1. 学生能够运用所学知识独立设计并实现一个简易的扫雷游戏,具备基本的编程实践能力。

2. 学生能够通过分析问题,设计合理的类与对象,提高问题解决能力。

3. 学生能够运用调试工具,发现并修复程序中的错误,提高程序调试能力。

情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣和热情,树立编程解决问题的自信心。

2. 学生通过小组合作,培养团队协作精神,增强沟通与交流能力。

3. 学生在游戏设计过程中,关注用户体验,培养产品思维和用户服务意识。

课程性质:本课程为Java语言编程实践课程,以项目为导向,注重学生动手能力培养。

学生特点:学生为初中生,具备一定的Java基础,对游戏编程有较高的兴趣。

教学要求:结合学生特点,课程要求以实践为主,注重引导学生自主探究和小组合作,提高编程实践能力。

将目标分解为具体的学习成果,以便于后续教学设计和评估。

二、教学内容1. 面向对象编程基础:- 类与对象的定义- 属性和方法的声明与使用- 构造方法的定义与重载2. 数组的使用:- 一维数组的基本操作- 二维数组的定义与应用- 数组在扫雷游戏地图中的应用3. 异常处理:- 异常的概念与分类- try-catch语句的使用- 自定义异常处理4. 游戏编程实践:- 扫雷游戏规则介绍- 游戏界面设计- 游戏逻辑实现(如:雷区生成、翻开格子、标记雷等)- 游戏胜负判断5. 教学大纲:- 第一课时:面向对象编程基础复习,类与对象的创建- 第二课时:二维数组在扫雷游戏中的应用,设计游戏地图- 第三课时:异常处理,提高程序健壮性- 第四课时:扫雷游戏逻辑实现,界面设计- 第五课时:游戏调试与优化,小组展示与评价教学内容依据教材相关章节,结合课程目标进行选择和组织,保证教学内容的科学性和系统性。

JAVA课设报告书—扫雷游戏

JAVA课设报告书—扫雷游戏

图3 主界面图通过MineGame创建的窗口可以选择游戏的级别,例如选择初级,选择后的窗口界面如图4所示。

图4 游戏开始界面MineArea创建的扫雷区域效果如图5和6所示。

其中图5为扫雷进行中的效果,图6为扫雷失败效果。

图5 扫雷进行中的效果图图6 扫雷失败后的效果图ShowRecord创建的对象负责提供显示成绩的界面,效果如图7所示。

图7 成绩结果图5 设计体会通过这次的课程设计,我对Java这门语言有了更深刻的理解。

其中包括类、对象、接口、继承、方法以及Java语言中的常用包等的使用方法,特别是图形用户界面里各种组件的创建,事件处理等相关知识。

使我对Java语言是一种非常难懂的语言的思想有了极大的改观。

这次的课程设计是用Java语言及相关知识设计一个扫雷游戏系统,能实现选择游戏级别,记录游戏时间和保存游戏成绩等功能。

虽然整个设计的时间才短短两周,我还是对JDK和JCreator等Java语言开发工具有了深层次的认知,并熟练掌握了它们的使用方法。

而且这次的课程设计,也使我的编程能力有了明显的提高。

通过这次课程设计设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。

此外,我认为这次课程设计最大的收获就是:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

6 参考文献[1] 朱福喜,尹为民,余振坤. Java语言与面向对象程序设计[M].武汉:武汉大学出版社1999.5:67-128[2] 陈国君,陈磊.Java 2从入门到精通[M].北京:清华大学出版社,2006.1:13-98[3] 王梅,Java并发编程—设计原则与模式[M].北京:中国电力出版社,2009.02[4] 尹伟民,Java程序设计之网络编程[M].北京:清华大学出版社,2008.03[5] 印昊.java与面向对象程序设计[M].高等教育出版社.2008.4.[6] 耿祥义.Java课程设计.清华大学出版社,2009.。

扫雷游戏设计实践报告(2篇)

扫雷游戏设计实践报告(2篇)

第1篇一、引言扫雷游戏是一款经典的益智游戏,起源于1980年代的微软操作系统中。

游戏的核心玩法是玩家在一张网格地图上,通过点击不同的格子来揭示隐藏在其中的地雷或空白区域。

本报告将详细阐述扫雷游戏的设计实践过程,包括游戏设计理念、游戏规则、界面设计、算法实现等方面。

二、游戏设计理念1. 简洁明了:游戏界面简洁,易于上手,让玩家在短时间内掌握游戏规则。

2. 逻辑性强:游戏过程需要玩家运用逻辑思维,找出隐藏在地图中的地雷。

3. 可玩性强:游戏难度逐渐增加,满足不同玩家对挑战的需求。

4. 休闲性强:游戏节奏适中,适合在闲暇时间放松心情。

三、游戏规则1. 游戏开始时,玩家可以选择不同大小的地图,地图上随机分布着地雷。

2. 玩家点击一个格子,如果点击的是地雷,则游戏结束;如果点击的是空白区域,则根据周围地雷的数量显示数字,表示周围有多少个地雷。

3. 玩家可以通过双击空白区域来快速揭示周围所有空白区域,加快游戏进度。

4. 游戏目标是在规定时间内,找出所有地雷,并揭示所有空白区域。

四、界面设计1. 游戏主界面:展示地图、时间、剩余地雷数等信息。

2. 地图界面:展示玩家所点击的格子,以及揭示的地雷和空白区域。

3. 设置界面:允许玩家选择地图大小、难度等级等。

五、算法实现1. 地图生成算法:根据玩家选择的地图大小和难度等级,随机生成地雷分布。

2. 地雷检测算法:当玩家点击一个格子时,根据周围地雷的数量判断是否为地雷。

3. 空白区域揭示算法:当玩家双击一个空白区域时,递归揭示周围所有空白区域。

4. 时间统计算法:记录玩家游戏过程中的耗时,用于计算游戏成绩。

六、游戏优化1. 提高地图生成算法的随机性,降低游戏重复性。

2. 优化地雷检测算法,提高游戏运行效率。

3. 在游戏过程中,添加音效和动画效果,增强游戏体验。

4. 实现排行榜功能,让玩家可以查看自己的成绩与其他玩家的对比。

七、总结本报告详细介绍了扫雷游戏的设计实践过程,包括游戏设计理念、游戏规则、界面设计、算法实现等方面。

毕业设计_java版扫雷游戏

毕业设计_java版扫雷游戏

1 引言1.1 课题背景及意义当前随着计算机的深入普及,越来越多的人有了个人电脑,人们运用计算机完成许多重要的工作,计算机在人们的日常生活中扮演着越来越重要的角色。

随着计算机的广泛应用和深入发展,当前的计算机应用早已不单局限于工作,计算机的娱乐性越来越得到人们的关注,近年来游戏产业规模飞速成长。

权威市场调研机构国际数据集团(DFC Intelligence)日前发表报告显示,在2013年全球游戏市场的产值达到了600.4亿美元,并预测2014年将达到649亿美元,更会在2015年突破700亿美元大关。

这远远超越好莱坞电影产业以及音乐等娱乐事业,而成为目前娱乐事业的最大主流。

目前整个游戏产业的运作模式已经跟好莱坞电影产业的运作模式非常相近,电影产业有制片、发行、宣传等明细分工,游戏产业亦同,由专业的游戏研发小组负责研发游戏,也有如微软、Steam这类国际级经销商负责游戏发行,甚至连“游戏制作人”也被培养成明星一样成为一种招牌,如任天堂有王牌制作人宫本茂、SEGA有铃木裕、KONAMI 有小岛秀夫、CAPCOM有三上真司,明确的游戏产业分工的确有助于游戏产业的规模发展与进化,但也无形中让游戏开发成本大增。

为了降低游戏开发成本,开发娱乐性强成本低的游戏就成为当前的主要课题,在这种趋势下各种小型的低成本的游戏软件应运而生。

在这其中,系统自带的小游戏也占据了相当重要的地位,与那些网络游戏和3D游戏相比,它有编写简单、容易上手等特点,可以满足人们在完成日常工作之余适当娱乐的需求。

这些小游戏大都是以益智和娱乐为目的,不仅给紧张工作的人们以放松,还可以让人们的大脑得到开发。

微软公司的Windows系列操作系统中内置了很多非常经典的小游戏,包括扫雷,弹球,纸牌等等。

1.2 关于本课题本次课题研究的是微软公司的操作系统Windows中的扫雷游戏。

扫雷游戏是Windows操作系统下的一款经典游戏,在过去的数年里,windows操作系统历经数次换代更新,变的越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然存活了下来,可见这款小游戏的经典。

Java扫雷游戏课程设计实训报告

Java扫雷游戏课程设计实训报告

Java应用技术实训报告一.总体设计本系统共包括3个java源文件和4个图像文件。

1•类之间的关系如图1.1所示。

图1.1类之的关系2.java源文件及其功能如表1所示。

3.图像文件Bomb.gif:地雷方块上的图标。

question.gif:疑惑探雷是否正确。

bomb_big.gif:触雷时方块上的图标。

flag.gif:探雷标记。

二、详细设计1.主类Main(1)成员变量(见表2)(2)成员变量(见表3)(3)源代码见文件Main.java import java.awt.*;import java.awt.event.*;import javax.swing.*;/*主类*/public class Main(public static void main(String args[]) ((new MainBomb()).show();))2.挖雷游戏MainBomb(1)成员变量(见表4)(2)方法见(表5)(3)源代码见文件MainBomb.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;/*窗口及算法实现类*/class MainBomb extends JFrame implements ActionListener,MouseListener(public JTextField text;public Label nowBomb,setBomb;public int BlockNum,BombNum;//当前方块数当前雷数public Icon icon_bomb = new ImageIcon("Bomb.gif");//踩雷public Icon icon_bomb_big = new ImageIcon("bomb_big.gif"); //踩雷标记public Icon icon_flag = new ImageIcon("flag.gif");//雷标记public Icon icon_question = new ImageIcon("question.gif"); //疑惑是否有雷public JButton start = new JButton("开始");public Panel MenuPamel = new Panel();public Panel mainPanel = new Panel();public Bomb[][] bombButton;/*界面设计*/public MainBomb()super("成型04-2李超JAVA课程设计");BlockNum = 64;BombNum = 10;Container c=getContentPane();c.setBackground(Color.gray);c.setLayout(new BorderLayout());text=new JTextField("10 ",3);nowBomb = new Label(%前雷数"+" "+BombNum+"");setBomb= new Label("设置地雷数");start.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){BombNum = Integer.parseInt(text.getText().trim());if(BombNum >= 10 && BombNum < 50 )replay();else{JOptionPane msg = new JOptionPane();JOptionPane.showMessageDialog(null,"您设置的地雷数太多了,请重设!","错误",2);))});MenuPamel.add(setBomb);MenuPamel.add(text);MenuPamel.add(start);MenuPamel.add(nowBomb);c.add(MenuPamel,"North");mainPanel.setLayout(new GridLayout( (int)Math.sqrt(BlockNum)(int)Math.sqrt(BlockNum)));bombButton=new Bomb[ (int)Math.sqrt(BlockNum) ][]; for(int i = 0 ; i < (int)Math.sqrt(BlockNum) ; i++)(bombButton[ i ]=new Bomb[ (int)Math.sqrt(BlockNum)]; )for(int i = 0 ; i < (int)Math.sqrt(BlockNum) ; i++ )for(int j = 0 ; j < (int)Math.sqrt(BlockNum) ; j++ )(bombButton[ i ][ j ]=new Bomb(i,j);bombButton[ i ][ j ].setForeground( Color.gray);bombButton[ i ][ j ].addActionListener(this);bombButton[ i ][ j ].addMouseListener(this);)for(int i = 0 ; i < (int)Math.sqrt(BlockNum) ; i++ )for(int j = 0 ; j < (int)Math.sqrt(BlockNum) ; j++ )mainPanel.add(bombButton[ i ][ j ]);c.add(mainPanel,"Center");startBomb();setSize(400,400);setLocation(350,200);setResizable(false);)/*布雷*/public void startBomb()for(int i=0;i<BombNum;i++)(int x =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1)); int y =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1));if(bombButton[ x ][ y ].isBomb==true)i--;elsebombButton[ x ][ y ].isBomb=true ;))/*重新开始*/public void replay()(nowBomb.setText("当前雷数"+" "+BombNum+"");for(int i = 0 ; i < (int)Math.sqrt(BlockNum) ; i++)for(int j = 0 ; j < (int)Math.sqrt(BlockNum) ; j++)(bombButton[ i ][ j ].isBomb=false;bombButton[ i ][ j ].isClicked=false;bombButton[ i ][ j ].setEnabled(true);bombButton[ i ][ j ].setText("");bombButton[ i ][ j ].setIcon(null);)startBomb();)/*是否挖完了所有的雷*/public void isWin()(int findBomb=0; //找至帕勺地雷数for(int i=0;i< (int)Math.sqrt(BlockNum); i++)for(int j=0;j< (int)Math.sqrt(BlockNum ); j++)(if(bombButton[ i ][ j ].isBomb == true && bombButton[ i ][ j ].isRight==true)findBomb++;)if( findBomb == Integer.parseInt(text.getText().trim()))(JOptionPane msg = new JOptionPane();JOptionPane.showMessageDialog(this,"您挖完了所有的雷,您胜利了!",, 您胜利了”,2);))/*计算方块周围雷数*/public void CountRoundBomb()(for (int i=0; i< (int)Math.sqrt(BlockNum); i++)(for (int j = 0; j < (int)Math.sqrt(BlockNum); j++)(int count = 0;//当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数if (bombButton[ i ][ j ].isBomb != true) {if ( (i - 1 >= 0) && (j - 1 >= 0)) {if (bombButton[i - 1][j - 1].isBomb == true) {count += 1; //检测左上方空格是否是地雷))if ( (i - 1 >= 0)) {if (bombButton[i - 1][ j ].isBomb == true) {count += 1; //检测上方空格是否为地雷))if ( (i - 1 >= 0) && (j + 1 <= (int)Math.sqrt(BlockNum)-1)) { if (bombButton[i - 1][j + 1] .isBomb == true) {count += 1; //检测右上方是否为地雷))if ( (j - 1 >= 0)) {if (bombButton[ i ][j - 1] .isBomb == true) {count += 1; //检测左边是否为地雷)if ( (i >= 0) && (j + 1 <= (int)Math.sqrt(BlockNum)-l)) {if (bombButton[ i ][j + 1].isBomb == true) {count += 1; //右边))if ( (j - 1 >= 0) && (i + 1 <= (int)Math.sqrt(BlockNum)-1)) {if (bombButton[i + 1][j - 1].isBomb == true) {count += 1; //左下))if ( (i + 1 <= (int)Math.sqrt(BlockNum)-1)) {if (bombButton[i + 1][ j ].isBomb == true) {count += 1; //下))if ( (j + 1 <= (int)Math.sqrt(BlockNum)-1) && (i + 1 <= Math.sqrt(BlockNum)-1)) {if (bombButton[i + 1][j + 1].isBomb == true) {count += 1; //右下))bombButton[ i ][ j ].BombRoundCount = count;))/**当选中的位置为空,则翻开周围的地图**/public void isNull(Bomb[][] bombButton,Bomb ClickecButton)(int i,j;i=ClickecButton.num_x;j=ClickecButton.num_y;if (ClickecButton.isBomb==true) {)else {if ( (i - 1 >= 0) && (j - 1 >= 0)) { //检测左上方空格是否是空if (bombButton[i - 1][j - 1].isBomb == false && bombButton[i - 1][j -1].isClicked == false && bombButton[i - 1][j - 1].isRight == false) {bombButton[i-1][j-1].setText((bombButton[i-1][j-1].BombRoundCount)+"" ); bombButton[i - 1][j - 1].setEnabled(false);bombButton[i - 1][j - 1].isClicked=true;))if ( (i - 1 >= 0)) { //检测上方空格是否为空if (bombButton[i-1][ j].isBomb == false && bombButton[i - 1][ j ].isClicked == false && bombButton[i - 1][ j ].isRight == false){bombButton[i-1][ j].setText((bombButton[i- 1][ j ].BombRoundCount)+"");bombButton[i - 1][ j ].setEnabled(false);bombButton[i - 1][ j ].isClicked=true;)if ( (i - 1 >= 0) && (j + 1 <= ((int)Math.sqrt(BlockNum)-l)) ) { //检测右上方是否为空if (bombButton[i - 1][j + 1] .isBomb == false && bombButton[i - 1][j + 1].isClicked == false && bombButton[i - 1][j + 1].isRight == false){bombButton[i - 1][j + 1].setText((bombButton[i - 1][j + 1].BombRoundCount)+"");bombButton[i - 1][j + 1].setEnabled(false);bombButton[i - 1][j + 1].isClicked=true;))if ( (j - 1 >= 0)) { //检测左边是否为空if (bombButton[ i ][j - 1].isBomb == false && bombButton[ i ][j -1].isClicked == false && bombButton[ i ][j - 1].isRight == false) {bombButton[ i ][j - 1].setText((bombButton[ i ][j - 1].BombRoundCount)+"");bombButton[ i ][j - 1].setEnabled(false);bombButton[ i ][j - 1].isClicked=true;))if ( (i >= 0) && (j + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) {/检测右边空格是否是空if (bombButton[ i ][j + 1].isBomb == false && bombButton[ i ][j +1].isClicked == false && bombButton[ i ][j + 1].isRight == false) {bombButton[ i ][j + 1].setText((bombButton[ i ][j + 1].BombRoundCount)+"");bombButton[ i ][j + 1].setEnabled(false);bombButton[ i ][j + 1].isClicked=true;))if ( (j - 1 >= 0) && (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) { //检测左下空格是否是空if (bombButton[i + 1][j - 1].isBomb == false && bombButton[i + 1][j - 1].isClicked == false && bombButton[i + 1][j - 1].isRight == false) {bombButton[i + 1][j - 1].setText((bombButton[i + 1][j - 1].BombRoundCount)+"");bombButton[i + 1][j - 1].setEnabled(false);bombButton[i + 1][j - 1].isClicked=true;))if ( (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) { //检测下边空格是否是空if (bombButton[i + 1][ j ].isBomb == false && bombButton[i +1][ j ].isClicked == false && bombButton[i + 1][ j ].isRight == false) {bombButton[i + 1][ j ].setText((bombButton[i +1][ j ].BombRoundCount)+"");bombButton[i + 1][ j ].setEnabled(false);bombButton[i + 1][ j ].isClicked=true;))if ( (j + 1 <= ((int)Math.sqrt(BlockNum)-1) ) && (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) {//检测右下边空格是否是空if (bombButton[i + 1][j + 1].isBomb == false && bombButton[i + 1][j + 1].isClicked == false && bombButton[i + 1][j + 1].isRight == false){bombButton[i+1][j+1].setText((bombButton[i+1][j+1].BombRoundCo unt)+"");bombButton[i + 1][j + 1].setEnabled(false);bombButton[i + 1][j + 1].isClicked=true;))if ( (i - 1 >= 0) && (j - 1 >= 0))//检测左上isNull(bombButton,bombButton[i - 1][j - 1]);if ( (i - 1 >= 0))isNull( bombButton,bombButton[i - 1][ j ]);//检测上方if ( (i - 1 >= 0) && (j + 1 <= (int)Math.sqrt(BlockNum)-1))isNull( bombButton,bombButton[i - 1][j + 1]);//检测右上if ( (j - 1 >= 0))isNull(bombButton,bombButton[i][j - 1]);//检测左边if ( (i >= 0) && (j + 1 <= ((int)Math.sqrt(BlockNum)-1)))isNull(bombButton,bombButton[i][j + 1]);//检测右边if ( (j - 1 >= 0) && (i + 1 <= ((int)Math.sqrt(BlockNum)-1)))isNull(bombButton,bombButton[i + 1][j - 1]); //检测左下if ( (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) ) //检测下isNull(bombButton,bombButton[i + 1][ j ]);if ( (j + 1 <= ((int)Math.sqrt(BlockNum)-1)) && (i + 1 <= ((int)Math.sqrt(BlockNum)-1)) )//检测右下isNull(bombButton,bombButton[i + 1][j + 1]);))public void actionPerformed(ActionEvent e)(CountRoundBomb();if(((Bomb)e.getSource()).isBomb==false&&((Bomb)e.getSource()).isClicked==false)( ((Bomb)e.getSource()).setText(( ((Bomb)e.getSource()).BombRoundCount) +"”);((Bomb)e.getSource()).isClicked=true;((Bomb)e.getSource()).setIcon(null);((Bomb)e.getSource()).setEnabled(false);if((((Bomb)e.getSource()).BombRoundCount) == 0)isNull(bombButton,(Bomb)e.getSource());isWin();)else if(((Bomb)e.getSource()).isBomb == true)(for(int i=0;i<(int)Math.sqrt(BlockNum);i++)for(int j=0;j<(int)Math.sqrt(BlockNum);j++)(if(bombButton[ i ][ j ].isBomb == true)bombButton[ i ][ j ].setIcon(icon_bomb);)((Bomb)e.getSource()).setIcon(icon_bomb_big);JOptionPane msg = new JOptionPane();JOptionPane.showMessageDialog(this,"你踩至。

2.计算机学院中期检查报告(参考模板)

2.计算机学院中期检查报告(参考模板)

毕业设计(论文)中期报告专业:班级:学号:姓名:毕业设计题目:目录1.毕业设计的进展情况 (1)1.1.课题工作完成情况 (1)1.2.知识学习情况 (1)1.3.解决复杂工程问题情况 (1)2.存在问题与解决方案 (1)2.1.存在的主要问题 (1)2.2.解决方案与可行性研究 (1)3.下一步计划 (2)说明:1、报告要求5000字以上。

2、本模板仅为基本参考,请各位同学根据个人情况进行目录结构扩展。

3、中期报告格式参考毕业论文格式1.毕业设计的进展情况1.1.课题工作完成情况(详细介绍已完成的工作情况,包括对复杂软件工程问题的推理分析。

对于已经开展完成的设计实施工作,需要对实验结果进行分析和解释,并通过信息综合得到合理有效的结论。

)1.2.知识学习情况(根据课题应用场景,选择开发环境、工具与技术标准;说明工具的学习和使用情况,文献和书籍的查阅、分析、总结和收获;翻译外文资料情况)1.3.解决复杂工程问题情况(目前在方案设计中有哪些问题是需要多种知识融合、交叉学科的复杂工程问题,是如何解决的;在设计环节中你的创新性体现在哪里;在解决的过程中,如何考虑社会、健康、安全、法律、文化以及环境等因素。

2.存在问题与解决方案2.1.存在的主要问题(分析、总结和归纳毕设执行过程中尚未解决的主要工程问题)2.2.解决方案与可行性研究(针对当前尚未解决的复杂工程问题,分析文献寻求解决方案,并在安全、环境、法律等约束条件下,通过技术经济评价对设计方案的可行性进行研究,说明方案的合理性。

)3.下一步计划。

JAVA课程设计_扫雷游戏报告(定稿)

JAVA课程设计_扫雷游戏报告(定稿)

合肥学院计算机科学与技术系课程设计报告20013~2014学年第一学期课程JA V A语言基础课程设计名称扫雷游戏学生姓名龚天棚学号**********专业班级网络工程1班指导教师张贯虹2013年9月目录第一章设计内容及要求 (1)1.1 扫雷游戏的基本要求 (1)1.2 游戏需要实现的主要功能 (1)第二章需求分析 (2)2.1扫雷游戏界面设计 (2)2.2 雷区的设计 (2)2.3 音效的设计 (3)2.4 扫雷英雄榜的设计 (3)第三章总体设计 (5)3.1 总体功能图 (5)3.2 总体流程图 (5)第四章主要功能设计流程 (6)4.1 雷区设计流程图 (6)4.2 音效设计流程图 (6)4.3 英雄榜设计流程图 (7)第五章主要功能设计流程 (8)5.1 类之间关系图 (8)5.2 程序运行效果图 (8)5.2.1 游戏登录界面 (8)5.2.2 游戏菜单界面 (9)5.2.3 游戏运行界面 (10)5.2.4 游戏英雄榜界面 (12)第六章总结 (13)参考文献 (14)附录 (15)第一章设计内容及要求1.1扫雷游戏的基本要求当前各种游戏层出不穷,因为游戏的开发成本非常大,所以游戏的开发具有一定的风险性,但是一些小游戏的开发成本具有成本小,编写简单的优势,所以这些小游戏在游戏开发中也占有一席之地。

在这类小游戏中包括益智类游戏,它以画面精美、游戏方法简单等特点得到大家的认可。

成为人们在工作之余不可或缺的好伙伴。

针对这种情况我选择了扫雷游戏该课题作为我的课程题目。

Windows XP和Windows 7系统提供的扫雷游戏是一个很有趣的游戏。

本次课程设计的主要任务是使用JA V A语言编写一个与其类似的扫雷游戏。

具体要求如下:1、扫雷游戏分为初级、中级和高级三个级别,同时扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。

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

java扫雷游戏计算机毕业设计中期检查表、中期报告

java扫雷游戏计算机毕业设计中期检查表、中期报告

毕业论文中期检查表填表日期:2014年4月28日毕业设计中期报告一、毕业设计进度:我的毕业设计过程中包括可行性分析、需求分析、概要设计、详细设计和测试。

现在可行性分析、需求分析、概要设计均已基本完成,关于测试已完成了系统测试,详细设计也大体完成,只有少数功能仍需添加,另外还需把界面进一步美化。

关于代码已经基本编写完成,所以程序已经能够跑起来,可以展现出该毕业设计的主要界面,其功能也基本可以实现。

关于毕业论文,框架基本搭建好了,之后再对可行性分析、需求分析、概要设计、详细设计和测试这五个部分的内容填充的充实一些,把之后改进和添加的功能再加进去就基本完成了。

所以,总体来说,现阶段已完成毕业设计的85%。

二、毕业设计主要内容:本次毕业设计所设计的是JAVA版扫雷游戏,需要使用JAVA语言完成扫雷游戏的界面及各个功能模块,其中使用了JAVA语言的一些特性(如通用性、高效性、平台移植性和安全性等)和复杂算法(如使用了Math类中的random()方法来产生随机数,用于布雷时随机指定雷所在的位置等)等。

关于扫雷游戏的界面,需要完成的有两大块,即菜单区和雷区。

菜单区包含游戏(点击可选择初级、中级、高级),帮助(可查看扫雷游戏说明),计时器(显示游戏进行时间),开始(点击可开始游戏)以及雷数显示器(显示玩家标记后的剩余雷数)。

雷区由许多小方块组成,根据级别不同,方块数目不同,但均由横纵块数不同的小方块组成。

另外,本次毕业设计中最主要的是关于扫雷游戏的功能设计,其主要内容是使用JAVA语言编写要完成游戏所拥有的各个功能及界面上各个按钮的实现,其中主要包括以下四个功能:(1)玩家可以自己选择游戏级别,且级别不同,雷数不同;(2)游戏具有计时功能,即可显示玩家从游戏开始后所花费的时间;(3)玩家可以右键标记雷数,无论此方块是否为雷,雷数均减一;(4)点击方块,未踩到雷时,必须保证其周围8个方块中雷数与方块显示的数字相同。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

毕业论文中期检查表
毕业设计中期报告
一、毕业设计进度:
我的毕业设计过程中包括可行性分析、需求分析、概要设计、详细设计和测试。

现在可行性分析、需求分析、概要设计均已基本完成,关于测试已完成了系统测试,详细设计也大体完成,只有少数功能仍需添加,另外还需把界面进一步美化。

关于代码已经基本编写完成,所以程序已经能够跑起来,可以展现出该毕业设计的主要界面,其功能也基本可以实现。

关于毕业论文,框架基本搭建好了,之后再对可行性分析、需求分析、概要设计、详细设计和测试这五个部分的内容填充的充实一些,把之后改进和添加的功能再加进去就基本完成了。

所以,总体来说,现阶段已完成毕业设计的85%。

二、毕业设计主要内容:
本次毕业设计所设计的是JAVA版扫雷游戏,需要使用JAVA语言完成扫雷游戏的界面及各个功能模块,其中使用了JAVA语言的一些特性(如通用性、高效性、平台移植性和安全性等)和复杂算法(如使用了Math类中的random()方法来产生随机数,用于布雷时随机指定雷所在的位置等)等。

关于扫雷游戏的界面,需要完成的有两大块,即菜单区和雷区。

菜单区包含游戏(点击可选择初级、中级、高级),帮助(可查看扫雷游戏说明),计时器(显示游戏进行时间),开始(点击可开始游戏)以及雷数显示器(显示玩家标记后的剩余雷数)。

雷区由许多小方块组成,根据级别不同,方块数目不同,但均由横纵块数不同的小方块组成。

另外,本次毕业设计中最主要的是关于扫雷游戏的功能设计,其主要内容是使用JAVA语言编写要完成游戏所拥有的各个功能及界面上各个按钮的实现,其中主要包括以下四个功能:
(1)玩家可以自己选择游戏级别,且级别不同,雷数不同;
(2)游戏具有计时功能,即可显示玩家从游戏开始后所花费的时间;
(3)玩家可以右键标记雷数,无论此方块是否为雷,雷数均减一;
(4)点击方块,未踩到雷时,必须保证其周围8个方块中雷数与方块显示的数字相同。

三、毕业设计主要成果:
从毕业设计开始至提交中期检查表时间段内,毕业设计的可行性分析、需求分析、概要设计均已完成,详细设计和测试也完成了85%的内容,其中主要的成果便是程序已实现运行,在Eclipse上跑起来,还有即是论文的主题框架已经建立。

另外关于本次扫雷游戏设计,我编写了一个java源程序: Minesweeper.java,其中包含了两个类:Minesweeper和NormoreMouseEvent,Minesweeper类中拥有5个方法:initGUI()、go()、main()、out()和actionPerformed();而NormoreMouseEvent 类中有一个方法:mouseClick()。

在我的设计中,按方法来划分模块,把一个方法分成一个模块,故有六个模块:
(1)initGUI()声明初始化图形界面方法,设置雷区的宽度,高度以及雷区的级别;
(2)go()方法设置显示窗体;
(3)main()主方法用来实例化窗体对象,调用go()方法将窗体显示在屏幕之上;
(4)out()方法是一个递归方法,用于设置各个雷区中的方块显示内容及其周围8个方块的情况;
(5)actionPerformed()方法负责执行有关算法,分别从初级、中级、高级各个级别来调用out()方法进行扫雷;
(6)mouseClicked()方法是NormoreMouseEvent类中的一个接口方法。

该方法当鼠标单击时会触发。

下面我将简要运行一下程序,来展示一下具体的成果:
其他一些具体功能的截图将在论文中体现,以上就是目前为止我所做的毕业设计所取得的成果。

接下来的任务就是完善设计中的的功能,细化论文,向其中填充具体内容,制作答辩PPT,准备进行答辩。

相关文档
最新文档