收藏 分销(赏)

扫雷教案资料.doc

上传人:精*** 文档编号:3808307 上传时间:2024-07-19 格式:DOC 页数:30 大小:2.90MB
下载 相关 举报
扫雷教案资料.doc_第1页
第1页 / 共30页
扫雷教案资料.doc_第2页
第2页 / 共30页
扫雷教案资料.doc_第3页
第3页 / 共30页
扫雷教案资料.doc_第4页
第4页 / 共30页
扫雷教案资料.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、扫雷精品文档郑州工业应用技术学院课程设计说明书题目 扫雷游戏实验设计 专业班级 学号1姓名主要目的:实训主要是锻炼我们的操作能力,将学习的理论知识运用于实践当中,反过来还能检验书本上理论的正确性,有利于融会贯通。让我们对本专业知识形成一一个客观,理性的认识,从而不与社会现实相脱节。基本要求:1.深入学习和理解Java原理,掌握Java编程方法。 2.深入分析扫雷游戏运行流程,绘制程序流程图。主要参考资料:1 Eric. Java编程思想M. 第4版. 机械工业出版社, 机械工业出版社.2 杜波依斯. MySQL技术内幕M. 第4版. 人民邮电出版社 , 2011年3 林信良. JSP & Se

2、rvlet学习笔记M. 清华大学出版社, 2012年4 张峋, 杨三成. JSP与JDBC应用详解M.中国铁道出版社, 2010年完 成 期 限 10月7日-12月10日 指 导 教师签名 课程负责人签名 摘要Sun Microsystems公司在推出Java语言的同时,推出了一套开发工具JDK。Sun提供的基于字符模式的Java开发工具包JDK: Java开发工具(JDK)是许多Java专家最初使用的开发环境。Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。Java源程序编写借助于记事本,Editpuls,UltraEdit等第三方编辑工具。所有的Ja

3、va文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。JDK 是整个Java的核心,包括了Java运行环境(Java RuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。JDK里面是java类库和java的语言规范,它提供的是无论你用何种开发软件写java程序都必须用到的类库和java语言规范.

4、没有jdk,你的java程序根本就不能用。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。关键词:扫雷游戏;算法设计;事件;AVA目 录摘要3目 录4第一章 概述51.1课程设计目的51.2预备知识51.3课程设计内容和要求6第二章 需求分析72.1 系统目标72

5、.2主题功能72.3开发环境72.4概念设计7第三章 设计步骤93.1 程序流程图93.2雷区设计流程图93.4游戏背景图10第四章设计正文124.1 AllButtonPanel()类:124.2cleanMine类184.3MineButton类214.4游戏结果22第五章 课程设计心得体会28参考文献29课程设计成绩评定表30第一章 概述本课程设计的目标是设计一个名为扫雷的游戏软件,扫雷游戏分为初级、中级和高级三个级别。单击游戏菜单可以选择“初级”、“中级”和“高级”。1、选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击“开始”便启动计时器。2、用户要揭开某个方块,可左键单击

6、它。若所揭方块下有雷,用户便输了这一局,若所揭方块下无雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。3、如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。1.1课程设计目的通过选择扫雷游戏软件设计,这个综合性的题目作为本次的课程设计。可以让我们更加熟悉Java程序设计这门课程,学会熟练使用Java这个软件,加深对Java语言的掌握,提高编程水平。同时培养独立思考和同学间团结合作的能力,为毕业设计以及将来的工作打下坚实的基础。1.2预备知识JAVA

7、是一种功能强大和多用途的编程语言,具有面向对象、与平台无关的、安全、稳定和多线程等优良特性,可用于开发大型的应用程序,而且特别适合Internet应用的开发。java是由James Gosling在Sun公司的领导的小组开发的,最初成为Oak(橡树),1995年更名为java。JAVA语言规范、API(应用程序接口)、JDK(java开发工具包)、IDE(集成开发环境):Java语言规范定义了Java的语法,Java库则在Java API中定义;JDK是用于开发和运行java程序的软件;IDE是快速开发程序的集成开发环境。java是一门编程性的语言,编程时区分大小写,我们需要多加练习才能快速有

8、效的提高。要知道java是分两部分的:一个是编译,一个是运行。javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。JAVA:负责运行的部分.会启动jvm加载运行时所需的类库,并对class文件进行执行.每个java程序至少有一个类,类名是按照惯例都以大写字母开头,一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数。编程中一个良好的习惯就是写注释,分为行注释 /(注释的内容) 和块注释/(注释的内容)。1.3课程设计内容和要求Wi

9、ndows2000/XP系统提供的扫雷游戏是一个很有趣的游戏。本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。具体要求如下:(1)扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”。(2)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。(3)用户要揭开某个方块,可单击它。若所揭方块下有泪,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。(4)如果用户认为某个方块下埋着雷,单击右键可以在方块上标

10、识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。(5)扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。(6)如果用户需要即使提示声,并可选中声音选项,此时将听到计时的卡塔声。当用户点中雷时,将有爆炸声产生,胜利时,将有凯旋的旋律播放。第二章 需求分析2.1 系统目标本系统主要是完成俄罗斯方块游戏的基本操作,在玩游戏的过程中玩家可以放松心情得到娱乐。2.2主题功能(1) 用户可以自定义级别并且可以任意输入雷数;(2) 具有计时功能,即显示用户完成移动盘子所花费的时间;(3) 用户可以选择是否有音效;2.3开发环境

11、操作系统可以有以下几种:WinXP/WinVista/Win7。硬件要求:奔腾四处理器,主频2.0GHz,512M以上内存。2.4概念设计随着社会的不断进步,人们的压力也不断的提高,在游戏层出不穷的时刻,扫雷游戏任然受到不少人的青睐,其本身的性质,决定了人们对它的喜爱的程度,不需要特殊的技巧,不需要不断的升级,还不需要太多的时间进行熟悉,简简单单却趣味无穷。扫雷最原始的版本可以追溯到1973年一款名为“方块”的游戏。不久之后,“方块”被改写成了游戏“Rlogic”。在“Rlogic”里,玩家的任务是作为美国海军陆战队队员,为指挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。两年后,

12、汤姆安德森在“Rlogic”的基础上又编写出了游戏“地雷”,由此奠定了现代扫雷游戏的雏形。1981年,微软公司的罗伯特杜尔和卡特约翰逊两位工程师在Windows3.1系统上加载了该游戏,扫雷游戏才正式在全世界推广开来。Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java 语言也是学习面向对象编程和网络编程的首选语言。该课题的主要目的是使Java游戏开发者深入理解所学的Java语言,并实践于该俄罗斯方块游戏设计中,深刻体会以前所学的有关Java 程序设计方面的语言基础、异常处理、事件处理、应用程序以及图形用户界面设计等方面的知识,加深对结构化设计思想的理解,能对系统功能

13、进行分析,并设计合理的模块化结构等。学会使用Java系统,其中包括对程序的调试、运行、保存等知识的运用,还包括提高程序开发功能,能运用合理的方法简化Java程序的操作,开发过程中应培养分析问题、解决问题的能力。本次课程设计的主要目的是为了通过具体的程序来加深对Java语言的掌握,提高自己的编程水平。选择的题目来自Java课程设计(第二版)中的扫雷游戏,这是一个综合性的题目,可以对Java中的各项功能有更好的理解和使用,同时也为以后的工作打下一定的基础。第三章 设计步骤3.1 程序流程图下图为扫雷流程图,点击开始进入初始化,进入循环。如图3.1所示:图3.1 扫雷程序流程图3.2雷区设计流程图扫

14、雷逻辑分析也很重要,敲一个好的游戏,首先就要分析游戏逻辑,下图为扫雷雷区图,如图3.2所示:图3.2扫雷雷区流程图3.4游戏背景图扫雷游戏背景也很重要,拥有一个好的背景图会让玩家拥有更好的体验感,下图为1扫雷游戏背景图图,如图3.3所示:图3.3扫雷背景图图第四章设计正文4.1 AllButtonPanel()类:AllButtonPanel代码如下:package cleanMine;import javax.swing.*;import java.awt.*;import java.awt.event.*;/* * 显示所有按钮的面板 * author Administrator * */

15、public class AllButtonPanel extends JPanel implements ActionListenerprivate int row;/行数private int col;/列数private int mineCount;/地雷数private MineButton allButtons;/所有按钮public AllButtonPanel(int row,int col,int mineCount)this.row=row;this.col=col;this.mineCount=mineCount;allButtons=new MineButtonrowco

16、l;createButtons();createMine();init();private void init()this.setLayout(new GridLayout(row,col);for(int i=0;iallButtons.length;i+)for(int j=0;jallButtonsi.length;j+)this.add(allButtonsij);/* * 随机布雷的方法 * */private void createMine()int n=0;while(nmineCount)/随机生成mineCount个地雷int i=(int)(Math.random()*ro

17、w);int j=(int)(Math.random()*col);if(allButtonsij.getCountOfSurroundMines()!=-1)allButtonsij.setCountOfSurroundMines(-1);n+;for(int i=0;iallButtons.length;i+)/计算每个位置的周围地雷数for(int j=0;j=0&j-1=0)num+=(allButtonsi-1j-1.getCountOfSurroundMines()=-1?1:0);if(i-1=0)num+=(allButtonsi-1j.getCountOfSurroundMi

18、nes()=-1?1:0);if(i-1=0&j+1=0)num+=(allButtonsij-1.getCountOfSurroundMines()=-1?1:0);if(j+1allButtons0.length)num+=(allButtonsij+1.getCountOfSurroundMines()=-1?1:0);if(i+1=0)num+=(allButtonsi+1j-1.getCountOfSurroundMines()=-1?1:0);if(i+1allButtons.length)num+=(allButtonsi+1j.getCountOfSurroundMines()

19、=-1?1:0);if(i+1allButtons.length&j+1allButtons0.length)num+=(allButtonsi+1j+1.getCountOfSurroundMines()=-1?1:0);return num;/* * 生成按钮 * */private void createButtons()for(int i=0;iallButtons.length;i+)for(int j=0;jallButtonsi.length;j+)allButtonsij=new MineButton(i,j);allButtonsij.setSize(6,6);allButt

20、onsij.addActionListener(this);/添加点击事件监听allButtonsij.addMouseListener(new MouseAdapter()/添加鼠标右键事件监听public void mouseClicked(MouseEvent e) if(e.getButton()=MouseEvent.BUTTON3)int remain=Integer.parseInt(CleanMine.remainMine.getText();JButton b=(JButton)e.getSource();if(b.getText().equals()remain-;Clea

21、nMine.remainMine.setText(remain+);b.setText(&);else if(b.getText().equals(&)remain+;CleanMine.remainMine.setText(remain+);b.setText(););public void actionPerformed(ActionEvent e) /点击事件监听的方法MineButton b=(MineButton)e.getSource();int r=b.getRow();int c=b.getCol();if(allButtonsrc.getCountOfSurroundMine

22、s()=-1)/如果是地雷for(int i=0;iallButtons.length;i+)/把所有按钮都显示出来for(int j=0;j=0&j-1=0)showEmpty(i-1,j-1);if(i-1=0)showEmpty(i-1,j);if(i-1=0&j+1=0)showEmpty(i,j-1);if(j+1allButtons0.length)showEmpty(i,j+1);if(i+1=0)showEmpty(i+1,j-1);if(i+1allButtons.length)showEmpty(i+1,j);if(i+1allButtons.length&j+10)b.s

23、etText(allButtonsij.getCountOfSurroundMines()+);b.setBackground(Color.CYAN);b.setCleared(true);4.2cleanMine类cleanMine代码如下:package cleanMine;import javax.swing.*;import java.awt.*;import java.awt.event.*;/* * 扫雷游戏主界面 * author tony.tang * */public class CleanMine extends JFrame implements ActionListen

24、erprivate JLabel text1,text2;public static JLabel remainMine;/剩余地雷数private JLabel time;/消耗时间private JButton reset;/重新开始private JPanel center;private int row,col,mine;public CleanMine()text1=new JLabel(剩余地雷:);text2=new JLabel(消耗时间:);remainMine=new JLabel(10);time=new JLabel(0);reset=new JButton(重新开始)

25、;reset.addActionListener(this);JMenuBar bar=new JMenuBar();JMenu game=new JMenu(游戏);JMenu help=new JMenu(帮助);JMenuItem item;game.add(item=new JMenuItem(开局);item.addActionListener(this);game.addSeparator();ButtonGroup bg=new ButtonGroup();game.add(item=new JCheckBoxMenuItem(初级,true);bg.add(item);item

26、.addActionListener(this);game.add(item=new JCheckBoxMenuItem(中级);bg.add(item);item.addActionListener(this);game.add(item=new JCheckBoxMenuItem(高级);bg.add(item);item.addActionListener(this);game.add(item=new JCheckBoxMenuItem(自定义.);bg.add(item);item.addActionListener(this);game.addSeparator();game.ad

27、d(item=new JMenuItem(退出);item.addActionListener(this);help.add(item=new JMenuItem(查看帮助);item.addActionListener(this);help.add(item=new JMenuItem(关于扫雷.);item.addActionListener(this);bar.add(game);bar.add(help);this.setJMenuBar(bar);init();private void init()JPanel north=new JPanel();north.add(text1);

28、north.add(remainMine);north.add(reset);north.add(text2);north.add(time);this.add(north,BorderLayout.NORTH);this.row=9;this.col=9;this.mine=10;restart();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);new Thread()public void run()while(Integer.parseInt(remainMine.getText()0)try Thread.sleep(1000)

29、; catch (InterruptedException e) e.printStackTrace();time.setText(Integer.parseInt(time.getText()+1)+);.start();public void actionPerformed(ActionEvent e) if(e.getActionCommand().equals(初级)this.row=9;this.col=9;this.mine=10;restart();return;if(e.getActionCommand().equals(中级)this.row=16;this.col=16;t

30、his.mine=40;restart();return;if(e.getActionCommand().equals(高级)this.row=16;this.col=30;this.mine=99;restart();return;if(e.getActionCommand().equals(重新开始)restart();return;private void restart()if(center!=null)this.remove(center);center=new AllButtonPanel(row,col,mine);this.add(center,BorderLayout.CEN

31、TER);this.remainMine.setText(mine+);this.time.setText(0);this.setSize(col*30,row*30+10);this.setResizable(false);this.setVisible(true);/* * param args */public static void main(String args) new CleanMine();4.3MineButton类MineButton代码如下:package cleanMine;import javax.swing.JButton;import java.awt.*;pu

32、blic class MineButton extends JButton private int row;private int col;private boolean cleared=false;private int countOfSurroundMines;/周围地雷数,如果本按钮是雷,则为-1;public MineButton(int row,int col)this.row=row;this.col=col;this.setMargin(new Insets(0,0,0,0);public int getCol() return col;public int getRow() r

33、eturn row;public boolean isCleared() return cleared;public void setCleared(boolean cleared) this.cleared = cleared;public int getCountOfSurroundMines() return countOfSurroundMines;public void setCountOfSurroundMines(int countOfSurroundMines) this.countOfSurroundMines = countOfSurroundMines;4.4游戏结果4.

34、4.1游戏界面游戏玩家右击鼠标进去扫雷菜单,菜单中游戏等级分有初级、中级、高级和自定义如下图4.1所示:图4.1扫雷菜单4.4.2扫雷初级界面扫雷游戏等级分有初级、中级、高级和自定义,初级如下图4.2所示:图4.2扫雷初级界面4.4.3扫雷中级级界面扫雷游戏等级分有初级、中级、高级和自定义,中级级如下图4.2所示:图4.2扫雷中级界面4.4.4扫雷高级界面扫雷游戏等级分有初级、中级、高级和自定义,高级级如下图4.2所示:图4.2扫雷高级界面4.4.2扫雷自定义界面扫雷游戏等级分有初级、中级、高级和自定义,自定义如下图4.2所示:图4.2扫雷自定义界面4.4.3游戏运行玩家通过右击鼠标来进行扫雷

35、,并显示“雷”,以高级等级为例,如4.3所示:图4.3扫雷运行游戏玩家因触到雷而导致游戏结束,以高级等级为例,如4.4所示:图4.4扫雷结束第五章 课程设计心得体会这个扫雷游戏是完全模拟微软系统自带的扫雷游戏,所以难度是很大,必然在编程过程中也遇到很多问题,有些问题比较简单但就不知道错在哪里,有些大问题之道在哪就是不知道怎么办才好,后来经过自己的不断调试,这个扫雷游戏终于大功告成。经过编写这个扫雷游戏,我认识到应该注意细节问题,虽然是很小的问题,但可以提高自己编程的能力,而且还可以培养自己编程的严谨性,同时还可以为以后的编程积累经验。编写完这个扫雷游戏,我发现自己有很多的不足,我想如果让我来单

36、独来编写这个游戏,我感觉能编出来的可能性很小,因为这个游戏涉及到好多算法。感触最深的就是我们真的要扎扎实实的打基础!并且我感觉到只要我们自己肯下功夫学习,我们也可以做出很好的东西,不需要每次都抄袭别人的,只有自己的才是最珍贵的!参考文献1Eric. Java编程思想M. 第4版. 机械工业出版社, 机械工业出版社.2杜波依斯. MySQL技术内幕M. 第4版. 人民邮电出版社 , 2011年3林信良. JSP & Servlet学习笔记M. 清华大学出版社, 2012年4张峋, 杨三成. JSP与JDBC应用详解M.中国铁道出版社, 2010年5张银鹤. JSP+Ajax网站开发典型实例M.电

37、子工业出版社, 2009年6Weiss, MA. 数据结构与算法分析:Java语言描述M. 第2版. 机械工业出版社, 2009年01月.7Metsker S J. Java设计模式M. 第2版. 电子工业出版社, 2012年8孙卫琴. Tomcat与Java Web开发技术详解. 电子工业出版社, 2009年9刘京华 等. Java Web. 清华大学出版社, 2010年01月.10贺松平基于MVC模式的B/S架构的研究及应用2006年4月11毕建信基于MVC设计模式的Web应用研究与实现2006年10陈刚Eclipse从入门到精通清华大学出版社, 2005年11清宏计算机工作室.JSP编程技巧. 机械工业出版社, 2004年5月.12萨师煊,王珊.数据库系统概论.高等教育出版社,2002年2月.13温谦. HTML+CSS.人民邮电出版社, 2008年14刘晓义. XML技术及应用M.哈尔滨工程大学出版社, 2011年06月.15赵俊峰. Java Web应用开发案例教程:基于MVC模式的JSP+Servlet+JDBC和AJAXM. 清华大学出版社, 2012年01月.收集于网络,如有侵权请联系管理员删除

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服