基于Java扫雷游戏的设计与实现_第1页
基于Java扫雷游戏的设计与实现_第2页
基于Java扫雷游戏的设计与实现_第3页
基于Java扫雷游戏的设计与实现_第4页
基于Java扫雷游戏的设计与实现_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计(论文)题目:基于Java扫雷游戏的设计与实现2014年11月1日任务书学院(直属系):计算机科学与技术系时间:2014年5月20日学生姓名指导教师设计(论文)题目基于Java扫雷游戏的设计与实现主要研究内容1、完成扫雷游戏图形用户界面的设计。2、完成扫雷游戏内的功能模块,如难度级别模块、开局、退出模块等。3、完成扫雷游戏的具体玩法功能研究方法鉴于此项目比较简单,只编写了四个JAVA源程序ArrayPane.java,JavaMineSweeping.java,JavaMineSweepingFrame.java,RandomNumber.java。还用到了一些JAVA系统提供的重要的类,如File、JButton和JLabel等类。主要技术指标(或研究目标)主要实现:图形界面的出现、游戏功能正常执行、三个难度系数选择、过关后数据录入扫雷英雄榜。主要参考文献[1]朱福喜,尹为民,余振坤.Java语言与面向对象程序设计.武汉:武汉大学出版社,2008.[2]陈国君,陈磊.Java2从入门到精通.北京:清华大学出版社,2008.[3]王梅,Java并发编程—设计原则与模式.北京:中国电力出版社,2009.[4]尹伟民,Java程序设计之网络编程.北京:清华大学出版社,2008.[5]印昊.Java与面向对象程序设计.北京:高等教育出版社,2008.[6]耿祥义.Java课程设计.北京:清华大学出版社,2009.[7]赵生慧.Java面向对象程序设计.北京:高等教育出版社,2009.第一章系统概述1.1绪论扫雷一词有多个意思。扫雷游戏是微软于1992年附带在其操作系统中的小游戏,它通过点击格子并以出现的数字来判断附近地雷的数量,将全部地雷做上标记即可胜利;军事上的扫雷(mineclearing)是指搜索和清除地雷、陆军水雷及其他爆炸物的行动;扫雷又被引作网络用语。扫雷最原始的版本可以追溯到1973年一款名为“方块”的游戏,不久之后,“方块”被改写成了游戏“Rlogic”,在“Rlogic”里,玩家的任务是作为美国海军陆战队队员,为指挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。两年后,汤姆·安德森在“Rlogic”的基础上又编写出了游戏“地雷”,由此奠定了现代扫雷游戏的雏形。1981年,微软公司的罗伯特·杜尔和卡特·约翰逊两位工程师在Windows3.1系统上加载了该游戏,扫雷游戏才正式在全世界推广开来。这款游戏的玩法是在一个9*9(初级),16*16(中级),16*30(高级),或自定义大小的方块矩阵中随机布置一定量的地雷(初级为10个,中级为40个,高级为99个)。由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。如果玩家翻开的方块有地雷,则游戏结束。扫雷游戏的目标是尽快找到雷区中的所有不是地雷的方块,而不许踩到地雷。游戏区包括雷区、地雷计数器和计时器,在“游戏”菜单上,单击“开局”,计时器就会启动,此时请单击游戏区中的任何方块,点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果挖开的是地雷,则会输掉游戏,用右键标记您认为可能有地雷的方块。1.2开发工具SunMicrosystems公司在推出Java语言的同时,推出了一套开发工具JDK。Sun提供的基于字符模式的Java开发工具包JDK:Java开发工具(JDK)是许多Java专家最初使用的开发环境。Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。

Java源程序编写借助于记事本,Editpuls,UltraEdit等三方编辑工具编写。

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

JDK里面是Java类库和Java的语言规范,它提供的是无论你用何种开发软件写Java程序都必须用到的类库和Java语言规范.没有JDK,你的Java程序根本就不能用。

最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(JavaVirtualMachine)运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。但不管怎么说,我们还是需要先把SunJDK掌握好。1.3应用环境(1)操作系统:WindowsXP及以上版本(2)应用软件:JDKEclipse1.4编写意义随着计算机得普及,人们越来越多得接触到计算机,人们得生活工作中无处不有计算机得身影,人们面对长时间的难免会有倦怠的情绪,而人们大多得缓解情绪得网络活动其实并不能起到放松心情得作用,现代人得生活节奏越来越快,有没有一种快速缓解疲倦得游戏呢?我们提出设计一款益智得小游戏,这种游戏不会花太多时间,同时把玩家得思维带动起来,达到一举多得得效果。随着现在生活节奏的加快,人们在工作之余需要一个轻松娱乐的放松环境。因此我们小组编写此软件的目的,一方面作为初学者来了解扫雷的开发,另一方面开发此软件使用户能在娱乐休闲的同时拓展思维能力。同时进一步拓展研究,做到将扫雷层次升级,能够在多人连机的情况下,一起分工来进行对战。如一方放雷,另一方排雷。1.5任务设计内容本次设计只是完成了扫雷游戏的基本功能,在细节方面仍有待以后完善。Windows2000/XP系统提供的扫雷游戏是一个很有趣的游戏。本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。具体要求如下:(1)扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。(2)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。(3)用户要揭开某个方块,可单击它。若所揭方块下有泪,用户便输了这一局,若所揭方块下无雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。(4)如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。(5)扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。第二章可行性分析和需求分析2.1可行性分析适用于各种群体,学生、老师、白领,简单却有效地舒缓压力,消磨闲暇时光,一局所需的时间很短,低级的只需十多秒,此软件是以娱乐为主的休闲游戏,开发基于安卓手机操作系统。具有操作方便、便于保存等优点投资可行性:主要根据市场调查及预测的结果,以及有关的产业政策等因素,论证项目投资建设的必要性。(1)财务可行性:主要从项目及投资者的角度,设计合理财务方案,从企业理财的角度进行资本预算,评价项目的财务盈利能力,进行投资决策。(2)组织可行性:制定合理的项目实施进度计划、设计合理的组织机构、选择经验丰富的管理人员、建立良好的协作关系与、制定合适的培训计划等,保证项目顺利执行。(3)经济可行性:主要从资源配置的角度衡量项目的价值,评价项目在实现区域经济发展目标、有效配置经济资源、增加供应、创造就业、改善环境、提高人民生活等方面的效益。(4)法律可行性:在开发一个软件之前一定要确定它是否触犯某项法律或与国家的相关规定是否抵触。扫雷游戏系统并不任何法律或国家相关规定相抵触,所以在法律可行性上是通过的,在进行设计时没有违法任何法律法规,也不对任何企业的系统进行侵权等。系统的研制和开发都选用正版软件,将不会侵犯他人、集体和国家的利益,不会违反相关的国家政策和法律。(5)技术可行性评价:在限制条件下,功能目标基本能够实现和达到,利用现有技术,功能目标基本能够达到,开发人员足够能够满足条件要求,在规定时间内能够完成该项目开发。2.2需求分析随着社会的不断进步,人们所承受的压力不断上升,在游戏层出不穷的时刻,扫雷游戏仍受到不少人的青睐,其本身的性质,决定了人们对它的喜爱程度,不需要特殊的技巧,不需要不断地升级,不需要太多的时间进行初步的熟悉,简简单单却乐趣无穷。2.2.1理解需求扫雷游戏系统的建立,需要进行用户需求调查与分析,以确定系统目标,提高解决问题的详细方案,这是系统建设的重要环节。(1)系统可以根据需求来设计功能模块,如“开局”、“初级”、“中级”、“高级”“自定义”、“扫雷英雄榜”和“退出”等。(2)系统运行在Eclipse平台下,系统应该有一个较好的图形用户界面。2.2.2功能需求需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统(手工系统或计算机系统)工作概况,明确各种需求,然后在此基础上确定新系统的功能。根据用户的需求,确定本扫雷游戏应具有以下功能:(1)用户可以自行选择难度界别;(2)自动保存扫雷英雄榜;(3)用户可以设计“初级”、“中级”、“高级”三个级别。第三章详细设计在设计扫雷游戏时,需要编写4个Java源程序:ArrayPane.java,JavaMineSweeping.java,JavaMineSweepingFrame.java,RandomNumber.java。扫雷游戏除了需要编写上述4个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如File、JButton和JLabel等类。扫雷系统流程图如图3-1所示:图3-1流程图3.1JavaMineSweepingFrame类JavaMineSweepingFrame类是javax.swing包中JFrame的一个子类,并实现了ActionListener接口。主要控制“选择”菜单栏里的选项和状态栏的名称。如图3-2所示:图3-2菜单栏3.2ArrayPane类ArrayPane类是javax.swing包中JPanel容器的子类,实现了ActionListener和MouseListener接口,所创建的对象:ArrayPane是ArrayPane类中最重要的成员之一,作为一个容器添加到窗口的中心。3.3javaMineSweeping类javaMineSweeping类负责创建扫雷游戏机主窗口,该文件含有main方法,扫雷游戏从该类开始执行。3.4RandomNumber类RandomNumber类是雷区中“方块”的类封装,含有关于“方块”的属性以及操作,即负责为雷区创建代表“方块”的对象。3.5具体内容3.5.1菜单栏内容的生成通过创建多个对象实现菜单栏里项目的生成JMenuBarmenuBar=newJMenuBar();JMenumenuFile=newJMenu("选择");JMenuItemmenuLevelOne=newJMenuItem("初级");JMenuItemmenuLevelTwo=newJMenuItem("中级");JMenuItemmenuLevelThree=newJMenuItem("高级");JMenuItemmenuFileExit=newJMenuItem("退出");JButtonbutReset=newJButton("重来");3.5.2雷的生成通过在不同难度下的固定格数指定雷数然后通过随机数生成雷的位置,每次生成雷的位置不同publicArrayPane(introw,intcol){ this.row=row;//接受定制的行 this.col=col;//接受定制的列 if(row==9&&col==9){ totleNumber=10; }elseif(row==16&&col==16){ totleNumber=40; }elseif(row==16&&col==30){ totleNumber=99; }3.5.3单机非雷块后数字显示首先,在单击每块方块后会记录此次单击的位置坐标。privatestaticintclickRow;//当点击后,记住行坐标 privatestaticintclickCol;//当点击后,记住列坐标然后会调用一个递归的循环来处理雷块周围有多少雷显示数字的问题。b=newJButton[row][col];//设置按钮 for(i=0;i<row;i++){ //初始化按钮组 for(j=0;j<col;j++){ b[i][j]=newJButton(); b[i][j].addActionListener(this); b[i][j].addMouseListener(this); p2.add(b[i][j]); } } this.setBorder(BorderFactory.createTitledBorder(row*col+"格")); this.setLayout(newBorderLayout()); this.add(p1,BorderLayout.NORTH); this.add(p2,BorderLayout.CENTER); }第四章系统测试(1)程序运行后,界面上有一个菜单和一个按钮,分别是“选择”和“重来”;当玩家踩雷时候可以点击“重新开始来”。如图4-1所示:图4-1程序运行图(2)当玩家点击“游戏”菜单时会出现4个子菜单,分别是“初级”、“中级”、“高级”和“退出”。,玩家可以通过选择“初级”、“中级”和“高级”按钮来选择游戏级别;游戏结束后玩家可以通过“退出”退出游戏框。图4-2难度级别选择图4-3中级难度界面图4-4高级难度界面图4-5扫雷失败界面结束语通过这一阶段的毕业设计,我设计的教务系统终于基本完成。系统基本实现了老师的要求。期间出现过很多的问题,比如对数据库认识不够、功能优越性没得到充分发挥、对软件和一些类库的操作不足等,但在老师和同学的帮助下这些问题都得到了基本解决。在该系统制作的全过程中,我学会了如何去获取知识,如何去认真的做事情。由于时间和能力等各方面的限制,系统的设计和功能方面还存在着很多不足,没有达到预期想象,还需要不断改进和完善。毕业设计的结束大学也就结束了,但我会努力的提高自己,用在大学学到的技术和本领在社会上做出自己的贡献。参考文献[1]朱福喜,尹为民,余振坤.Java语言与面向对象程序设计.武汉:武汉大学出版社,2008.[2]陈国君,陈磊.Java2从入门到精通.北京:清华大学出版社,2008.[3]王梅,Java并发编程—设计原则与模式.北京:中国电力出版社,2009.[4]尹伟民,Java程序设计之网络编程.北京:清华大学出版社,2008.[5]印昊.Java与面向对象程序设计.北京:高等教育出版社,2008.[6]耿祥义.Java课程设计.北京:清华大学出版社,2009.[7]赵生慧.Java面向对象程序设计.北京:高等教育出版社,2009. 致谢毕业设计即将结束,大学的生活也就要要随之结束了。在毕业设计期间,我得到了老师很多的帮助和支持。,在程序制作方面,我吸收到许多有价值的技术知识,并且学会了如何自己学习,自己钻研,在我编写论文期间,老师给了我很多建设性意见,尤其是在数据流图、数据字典,程序流程图方面,并督促我多查阅资料。一遍一遍的帮我检查,指导我修改,使得我能最终顺利的完成了毕业设计。再次向一直支持鼓励我、关心我的老师、父母、同学和朋友们致以最诚挚的谢意!附录程序源代码JavaMineSweeping.java/***Swing扫雷游戏**@authorliu*@version1.002005/12/5*/importjavax.swing.*;publicclassJavaMineSweeping{publicstaticvoidmain(String[]args){ //try{//这是获取当前系统所运行的平台的程序外观。 // UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //}catch(Exceptione){ // e.printStackTrace();//打印异常的堆栈信息 //} JavaMineSweepingFrameframe=newJavaMineSweepingFrame(9,9);frame.setVisible(true);}}JavaMineSweepingFrame.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;/***SampleapplicationusingFrame.**@authorXieFei*@version1.0004/11/28*/publicclassJavaMineSweepingFrameextendsJFrameimplementsActionListener{ JMenuBarmenuBar=newJMenuBar();JMenumenuFile=newJMenu("选择");JMenuItemmenuLevelOne=newJMenuItem("初级");JMenuItemmenuLevelTwo=newJMenuItem("中级");JMenuItemmenuLevelThree=newJMenuItem("高级");JMenuItemmenuFileExit=newJMenuItem("退出");JButtonbutReset=newJButton("重来");JToolBartoolBar=newJToolBar();Containercon=this.getContentPane();JPanelp1=newJPanel();Dimensiond=newDimension(400,350);introw;//行intcol;//列ArrayPaneap; publicJavaMineSweepingFrame(introw,intcol){ super("扫雷——谢非"); menuLevelOne.addActionListener(this); menuLevelTwo.addActionListener(this); menuLevelThree.addActionListener(this); this.row=row; this.col=col; ap=newArrayPane(row,col);//加载菜单this.setJMenuBar(menuBar);menuBar.add(menuFile);menuFile.add(menuLevelOne);menuFile.add(menuLevelTwo);menuFile.add(menuLevelThree);menuFile.add(menuFileExit);butReset.addActionListener(this);toolBar.add(butReset);con.setLayout(newBorderLayout());con.add(toolBar,BorderLayout.NORTH);//北面 menuLevelOne.addActionListener(this);menuLevelTwo.addActionListener(this);menuLevelThree.addActionListener(this);menuFileExit.addActionListener(this);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);con.add(p1,BorderLayout.CENTER);//中间p1.setLayout(newGridLayout(1,1));p1.add(ap);this.setSize(400,400);this.setLocation(200,100);} publicvoidactionPerformed(ActionEvente){ if(e.getSource().equals(menuLevelOne)){ this.row=9; this.col=9; d=newDimension(400,350); this.reSet(d); } elseif(e.getSource().equals(menuLevelTwo)){ this.row=16; this.col=16; d=newDimension(500,450); this.reSet(d); } elseif(e.getSource().equals(menuLevelThree)){ this.row=16; this.col=30; d=newDimension(750,550); this.reSet(d); } elseif(e.getSource().equals(this.menuFileExit)){ System.exit(0); } elseif(e.getSource().equals(butReset)){ this.reSet(this.d); } } publicvoidreSet(Dimensiond){//??????????????????????????????????? this.p1.removeAll(); ArrayPaneap=newArrayPane(this.row,this.col); p1.add(ap); this.setVisible(false); //this.repaint(); this.setSize(d); this.setVisible(true); }}ArrayPane.java/*** 产生规定大小的带有按钮的面板***/importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;publicclassArrayPaneextendsJPanelimplementsActionListener,MouseListener{ privateintrow,col;//参数,接受窗体类传进来的行和列数 privateinti,k,j;//计数器 privatestaticintclickRow;//当点击后,记住行坐标 privatestaticintclickCol;//当点击后,记住列坐标 privateJButtonb[][];//雷按钮 privateImageIconimageIcon=newImageIcon("..\\icon\\a.jpg");//选种雷的图片 privatestaticinttotleNumber; privateJLabeltitle=newJLabel();//显示结果的标签 privateintarrayNumber[][];//接受随即数 privateJPanelp1=newJPanel(); privateJPanelp2=newJPanel(); /* * *构造函数 * */ publicArrayPane(introw,intcol){ this.row=row;//接受定制的行 this.col=col;//接受定制的列 if(row==9&&col==9){ totleNumber=10; }elseif(row==16&&col==16){ totleNumber=40; }elseif(row==16&&col==30){ totleNumber=99; } title.setText("还剩"+String.valueOf(totleNumber)+"个雷"); arrayNumber=newRandomNumber().getNumberArray(row,col);//产生随即数数组 p1.add(title); p2.setLayout(newGridLayout(row,col)); b=newJButton[row][col];//设置按钮 for(i=0;i<row;i++){ //初始化按钮组 for(j=0;j<col;j++){ b[i][j]=newJButton(); b[i][j].addActionListener(this); b[i][j].addMouseListener(this); p2.add(b[i][j]); } } this.setBorder(BorderFactory.createTitledBorder(row*col+"格")); this.setLayout(newBorderLayout()); this.add(p1,BorderLayout.NORTH); this.add(p2,BorderLayout.CENTER); } /** *MethodactionPerformed * * *事件监听 * */ publicvoidactionPerformed(ActionEvente){ System.out.println("点击事件"); breakPoint://设置循环跳出的点 for(i=0;i<row;i++){ for(j=0;j<col;j++){ if(e.getSource().equals(b[i][j])){ this.clickRow=i; this.clickCol=j; breakbreakPoint; } } } } /******************鼠标事件***************/ publicvoidmouseClicked(MouseEvente){ System.out.println("鼠标事件"); if(SwingUtilities.isLeftMouseButton(e)){//如果是左键 if(arrayNumber[this.clickRow][this.clickCol]==0){//如果没有点中雷 intunitNumber=this.arithmetic(this.clickRow,this.clickCol);//返回这个点周围的雷总数 b[this.clickRow][this.clickCol].setText(String.valueOf(unitNumber));//显示周围雷总数 } else{//如果点中了雷 JOptionPane.showMessageDialog(this,"你踩到雷了!GG思密达!"); } } /* * *鼠标右键比较特殊,没有触发actionPerformed事件, * *所以必须从新便历一次,来查找到右键点击的是哪个按钮 * */ elseif(SwingUtilities.isRightMouseButton(e)){//如果按的是右键 for(i=0;i<row;i++){ for(j=0;j<col;j++){ if(e.getSource().equals(b[i][j])){ if(arrayNumber[i][j]!=0){//如果右键点击的按钮是雷 b[i][j].setIcon(imageIcon); totleNumber--; title.setText("还剩"+String.valueOf(totleNumber)+"个雷"); } else{ //如果右键点击的按钮不是雷 b[i][j].setText("★"); //调用全都显示的方法 } } } } } } publicvoidmousePressed(MouseEvente){} publicvoidmouseReleased(MouseEvente){} publicvoidmouseEntered(MouseEvente){} publicvoidmouseExited(MouseEvente){} /* * * 算法函数 * * * * */ privateintarithmetic(introw,intcol){//算法返回周围雷总数 inttotleLei=0; /*****************第一行******************/ if(row==0){ if(col==0){ //1行1列 if(arrayNumber[0][1]!=0)//1行2列 totleLei++; if(arrayNumber[1][0]!=0)//2行1列 totleLei++; if(arrayNumber[1][1]!=0)//2行2列 totleLei++; } elseif(col==(this.col-1)){ //1行最后1列 if(arrayNumber[0][this.col-2]!=0)//1行n-1列 totleLei++; if(arrayNumber[1][this.col-1]!=0)//2行n列 totleLei++; if(arrayNumber[1][this.col-2]!=0)//2行n-1列 totleLei++; } else{ //1行中间列 if(arrayNumber[0][col-1]!=0)//1行col-1列 totleLei++; if(arrayNumber[0][col+1]!=0)//1行col+1列 totleLei++; if(arrayNumber[1][col-1]!=0)//2行col-1列 totleLei++; if(arrayNumber[1][col]!=0)//2行col列 totleLei++; if(arrayNumber[1][col+1]!=0)//2行col+1列 totleLei++; } } /*****************最后一行******************/ elseif(row==(this.row-1)){ if(col==0){ //最后行1列 if(arrayNumber[this.row-1][1]!=0)//最后一行2列 totleLei++; if(arrayNumber[this.row-2][0]!=0)//n-1行1列 totleLei++; if(arrayNumber[this.row-2][1]!=0)//n-1行2列 totleLei++; } elseif(col==(this.col-1)){ //最后行最后列 if(arrayNumber[this.row-1][this.col-2]!=0)//最后行n-1列 totleLei++; if(arrayNumber[this.row-2][this.col-1]!=0)//n-1行n列 totleLei++; if(arrayNumber[this.row-2][this.col-2]!=0)//n-1行n-1列 totleLei++; } else{ //最后行中间列 if(arrayNumber[this.row-1][col-1]!=0)//最后行col-1列 totleLei++; if(arrayNumber[this.row-1][col+1]!=0)//最后行col+1列 totleLei++; if(arrayNumber[this.row-2][col-1]!=0)//n-1行col-1列 totleLei++; if(arrayNumber[this.row-2][col]!=0)//n-1行col列 totleLei++; if(arrayNumber[this.row-2][col+1]!=0)//n-1行col+1列 totleLei++; } } /*****************第一列中间******************/ elseif(col==0){ if(arrayNumber[row-1][0]!=0) totleLei++; if(arrayNumber[row+1][0]!=0) totleLei++; if(arrayNumber[row-1][1]!=0) totleLei++; if(arrayNumber[row][1]!=0) totleLei++; if(arrayNumber[row-1][1]!=0) totleLei++; } /*****************最后列中间******************/ elseif(col==(this.col-1)){ if(arrayNumber[row-1][this.col-1]!=0) totleLei++; if(arrayNumber[row+1][this.col-1]!=0) totleLei++; if(arrayNumber[row-1][this.col-2]!=0) totleLei++; if(arrayNumber[row][this.col-2]!=0) totleLei++; if(arrayNumber[row-1][this.col-2]!=0) totleLei++; } /*****************中间******************/ else{ if(arrayNumber[row-1][col-1]!=0) totleLei++; if(arrayNumber[row-1][col]!=0) totleLei++; if(arrayNumber[row-1][col+1]!=0) totleLei++; if(arrayNumber[row][col-1]!=0) totleLei++; if(arrayNumber[row][col+1]!=0) totleLei++; if(arrayNumber[row+1][col-1]!=0) totleLei++; if(arrayNumber[row+1][col]!=0) totleLei++; if(arrayNumber[row+1][col+1]!=0) totleLei++; } returntotleLei; } }RandomNumber.java/*******/importjava.util.Random;importjava.lang.Math;publicclassRandomNumber{ inta,b; inti,j; intc,d; inttemp=0; publicint[][]getNumberArray(introw,intcol){ intarray1[][]=newint[row][col];//存放随即数 intarray[][]=newint[row][col];//存放具体数值 if(row==9&&col==9){ a=2;b=5;//得到2*5个雷 }elseif(row==16&&col==16){ a=5;b=8;//得到5*8个雷 }elseif(row==30&&col==16){ a=11;b=9;//得到11*9个雷 } for(i=0;i<row;i++){ //初始化数组 for(j=0;j<col;j++){ array[i][j]=++temp;//都等于1 } } for(i=0;i<a;i++){ for(j=0;j<b;j++){ this.c=(int)(Math.random()*row);//随即获得行数 this.d=(int)(Math.random()*col);//随即获得列数 System.out.println(c+""+d); array1[c][d]=array[c][d]; } } for(i=0;i<row;i++){ //初始化随即数数组 for(j=0;j<col;j++){ //System.out.println("array["+i+"]["+j+"]=="+array[i][j]); //System.out.println("array1["+i+"]["+j+"]=="+array1[i][j]); } } returnarray1; }}太原科技大学华科学院毕业设计(论文)基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论