您好,欢迎访问三七文档
前言设计基本的内容扫雷游戏的目标是尽快找到雷区中的所有地雷,而不许踩到地雷。如果挖开的是地雷,您将输掉游戏。扫雷游戏在程序运行后生成指定的地雷,在鼠标左键点击下寻找地雷,右键点击下标记地雷,点击笑脸的标记开始重新游戏,并给出胜利和失败的条件:标出所有的地雷和左键点中地雷。点击键盘Q键将推出游戏。在游戏菜单上,单击开局。单击游戏区中的任何方块,要启动计时器。通过单击即可挖开方块。如果挖开的是地雷,则您输掉游戏。如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。要标记您认为可能有地雷的方块,请右键单击它。游戏区包括雷区、地雷计数器和计时器。一章技术介绍扫雷游戏的相关知识点JAVA的图形界面图形界面简称GUI,是用图形的方式,借助菜单、按纽等标准界面元素和鼠标操作,帮助用户方便地想计算机系统发出指令、启动操作,并将系统的运行结果同样以图形方式显示给用户的技术。JAVA的图形界面技术既为使用java.awt包来创建图形界面的方法,包括AWT组件、窗口和菜单设计、布局管理器以及绘图操作等。AWT概述AWT既抽象窗口工具集,用于图形用户界面的开发。AWT的功能包括以下方面:(1)丰富的图形界面组件。(2)强大的事件处理模型图形和图形工具,包括形状、颜色和字体。(3)布局管理器,可以进行灵活的的窗口布局,设计特定窗口的尺寸和和屏幕分辨率。(4)无关数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴操作。(5)打印和无鼠标操作。Java.awt是java基本包中最大的一个,其中定义了所有的GUI组件类,以及其他用于构造图形界面的类。AWT基本组件(1)标签组件(Label)标签组件显示的是静态文本,在通常情况下是不能编辑的,能起到提示的作用Label组件有三种构造函数:Label():创建空的标签Label(String):创建一个带初始字符串的标签。Label(String,int):创建一个带初始字符串及指定对齐方式的标签。(2)文本域文本域一般用来让用户输入姓名、信用卡号等这样的信息,它是一个能够接收用户的键盘输入的小块区域。TextField():创建空的文本域(3)按钮(Button)几乎所有的交互式程序中都会有按纽,它是一种交互能力强且交互方便的控件,这个控件提供了“按下并动作”的基本用户界面。按纽的构造方法有:Button():建立一个没有标示字符串的新按纽类对象。Button(StringLabel):建立一个标示字符串为Label的新按纽类的对象(4)画板组件(Panel)我们在界面上安排各种组件时,有时会需要将组件成组放置,这时就可以使用面板组件。Panel是最简单的容器组件,本身是一个矩形区域,可以在其中放入各种组件。但它仅仅是安排各种组件的一种结构,需要最后加入到别的容器中才能实现GUI的功能。面板组件的创建Panel():用默认的布局管理器创建面板组件。Panel(LayoutManagerlayout):用指定的布局管理器创建面板组件。(5)框架窗口组件(Frame)Frame是独立于浏览器的可独立运行的主窗口,通常用于进行开发桌面应用程序。Frame拥有边界和标题栏设置,其大小可以进行设置调整。Frame里面需要加入组件,也可以加入菜单,或在上面绘图。Frame的创建Frame():创建一个没有窗口标题的窗口框架。Frame(String):创建一个指定窗口标题的窗口框架。(6)布局管理器FlowLayout布局管理器FlowLayout布局管理是一种最简单的布局管理方法,是Panel的默认布局。它以流式的方式,自左向右,自上而下地放置容器中的组件,即组件按每行先后自左向后放置,一行放不下再换行。FlowLayout布局管理器的创建FlowLayout():创建默认的FlowLayout布局管理器FlowLayout(int):以指定的对齐方式创建FlowLayout布局管理器。其中的参数有FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTERFlowLayout(int,int,int):以指定的对齐方式及间距创建FlowLayout布局管理器。其中第一个参数为对齐方式,第二个参数为组件间间距,第三个参数为列间距。(7)事件处理事件处理是一个接受事件、解释事件并处理用户交互的方法。事件处理有三个要素:①事件源事件源是一个时间的产生者,如按牛、窗口及文本域等。②事件类型JAVA中所有的事件都封装成一个类,这些事件类被集中在java.awt.exent包和java.swing.event包中,所有的事件类均继承了AWTEvent类和一个方法getSouce()方法,该方法返回发生事件的对象。③事件监听器不同的类型事件发生后,由事件监听器接受事件并调用响应的事件处理方法,所有的事件监听器实际上都是一个java.awt.exent包中的借口,继承了java.util.EventListener接口。不同的事件有不同的处理方法,(8)键盘事件处理该程序使用的是键盘监听事件,键盘事件对应的事件类是KeyEvent类,使用的该类的方法是getKeyCode()获得按下或释放的键代码getKeyText()获得按下或释放的键的字符串。键盘事件对应的事件监听器为:KeyListener或KeyAdapter实现键盘事件的操作步骤是:第一步,注册KeyListener监听器addKeyListener().当事件源所在的类已经实现KeyListener的接口时,参数可用this,否则需创建或继承一个KeyListener第二步,实现KeyListener接口的所有方法,即KeyPressed(KeyEvente)、KeyReleased(KeyEvente)、KeyTyped(MouseEvente)。第二章程序的概括设计画出流程图第三章详细设计本扫雷游戏的实现,共分为五个模块,分别表述为:模块1定义雷的类,鼠标左键点击不是雷,右键点击是雷,数字表示周围有多少个雷,具体实现函数如下示:classMinextendsJPanel//雷的类{//备注:鼠标的左键=1;右键=3;中键=2privateintflag=0,statu=0;//定义雷的属性0:没有打开1:打开2:标示为雷3:不确定//flag=0不是雷;flag=1是雷privateintbut,count=0;//but:哪一个鼠标键被按下去了count:这个区域周围有多少个雷privateintmx=0,my=0,mw=10;//定义雷的坐标和宽度publicMin()//构造函数{statu=0;}publicMin(intf,intx,inty,intw)//构造函数{flag=f;mx=x;my=y;mw=w;}publicintgetFlag(){returnflag;}publicintgetStatu(){returnstatu;}publicintgetMx(){returnmx;}publicintgetMy(){returnmy;}publicintgetMw(){returnmw;}publicintgetCount(){returncount;}publicvoidsetFlag(intf){flag=f;}publicvoidsetCount(intc){count=c;}publicvoidsetData(intf,intx,inty,intw,ints)//传递值{flag=f;mx=(x-1)*w;my=(y-1)*w;mw=w-1;statu=s;}//根据你点击鼠标的不同来改变雷的属性模块2:雷的分布和雷的画法具体实现函数的核心代码如下示:classDrawPanelextendsJPanel{privateinti,j;privateintf=0;//iff=1thengameover,iff=2thenwinprivateintchx=0,chy=0;//专门记录坐标x,y的值privateintmsum=6,ksum=0;//msum:雷的个数,ksum:标示雷的个数privateintbx=10,by=10,bw=40;//bx,by:棋盘的大小,bw:棋子的大小publicMinboard[][]={{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()
本文标题:java 扫雷
链接地址:https://www.777doc.com/doc-4471869 .html