Java程序设计实训教程课件实训一 扫雷游戏_第1页
Java程序设计实训教程课件实训一 扫雷游戏_第2页
Java程序设计实训教程课件实训一 扫雷游戏_第3页
Java程序设计实训教程课件实训一 扫雷游戏_第4页
Java程序设计实训教程课件实训一 扫雷游戏_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

实训一扫雷游戏1.1系统设计需求分析随机布雷实现扫雷功能标记小方块选择游戏的难度显示剩余雷数显示已使用时间最好成绩记录重新开始加快扫雷进程加入声音1.1系统设计类的设计MineFrame

MinePanelBlockBlockTypeBlockStateRecordGradeTimer对话框类监听器类1.2创建主窗口创建Java项目Saolei创建子文件夹image,将需要的图标复制到该文件夹创建MineFrame类publicclassMineFrameextendsJFrame{JMenuBarmenuBar;JMenumenu;JMenuItem[]menuItems;String[]menuItemNames={"初级","中级","高级","自定义","排行榜","退出"};JTextFieldminesRemained; //显示剩余雷数的文本框JButtonreStart; //重新开始按钮JTextFieldtimeUsed; //显示游戏使用时间的文本框Iconface; //按钮上的图标JPanelupPanel;//计时区域创建主程序类Saolei1.3

MinePanel类和Block类

BlockType类publicclassBlockType{ staticfinalintZERO=0;//周围的雷数 staticfinalintONE=1; staticfinalintTWO=2; staticfinalintTHREE=3; staticfinalintFOUR=4; staticfinalintFIVE=5; staticfinalintSIX=6; staticfinalintSEVEN=7; staticfinalintEIHHT=8; staticfinalintMINE=9;//是雷}1.3

MinePanel类和Block类

BlockState类publicclassBlockState{ staticfinalintORIGINAL=0;//初始状态 staticfinalintOPEN=1;//翻开状态 staticfinalintMINE_FLAG=2;//标记为雷 staticfinalintQUESTION_FLAG=3;//标记为问号 staticfinalintEXPLODED=4;//爆炸状态}

Grade类publicclassGrade{ publicstaticfinalintLOWER=1;//初级 publicstaticfinalintMEDIAL=2;//中级 publicstaticfinalintHIGHER=3;//高级 publicstaticfinalintSELF_DEFINE=4;//自定义}1.3

MinePanel类和Block类

Block类属性 privateMinePanelminePanel; privateintrow;//在雷区的行号 privateintcol;//在雷区的列号 publicfinalintWIDTH=19;//方块的宽度 publicfinalintHEIGHT=19;//方块的高度 privateinttype;//0,1,2,3,4,5,6,7,8,(9雷) privateintstate;//0原始状态,1翻开,2标记为雷,3标记为问号 publicstaticToolkittk; publicstaticfinalImage[]numberImage;//0~8 publicstaticfinalImage[]flagImage;//0标记为雷、1标记为问号 publicstaticfinalImage[]bombImage;//0未爆炸、1已爆炸

publicstaticfinalImagebackImage;//未翻开时的背面

1.3

MinePanel类和Block类

Block类方法publicbooleanopen()//翻开,遇雷失败publicvoiddraw(Graphicsg)//画出不同类型、不同状态的方块构造方法、get、set方法

1.3

MinePanel类和Block类

MinePanel类属性 publicfinalintGRID_WIDTH=20;//方格的宽度 publicfinalintGRID_HEIGHT=20;//方格的高度 privateMineFramemf; privateintcols;//雷区的列数 privateintrows;//雷区的行数 privateintmines;//雷区的雷数 privateintremainedMines;//未标记的雷数 privateintopenedBlocks;//已经翻开的方块数 privateBlock[][]blocks;//方块数组1.3

MinePanel类和Block类

MinePanel类方法publicvoidinitMinePanel(introws,intcols,intmines)//初始化参数privatevoidcreateBlocks()//创建小方块privatevoidlayMines()//随机布雷privatevoidcountMines(introw,intcol)//计算指定方块周围的雷数publicvoidpaint(Graphicsg)//画出雷区publicDimensiongetPreferredSize()1.3

MinePanel类和Block类将雷区加入到MineFrame中在MineFrame类中添加属性 MinePanelminePanel; privateintrows; privateintcols; privateintmines;添加initParameter方法privatevoidinitParameter(introws,intcols,intmines){ this.rows=rows; this.cols=cols; this.mines=mines;}1.3

MinePanel类和Block类将雷区加入到MineFrame中修改构造方法

publicMineFrame(){ createMenu(); createUpPanel(); initParameter(10,10,10); minePanel=newMinePanel(this,rows,cols,mines); Containerc=this.getContentPane(); c.add(upPanel,BorderLayout.NORTH); c.add(minePanel,BorderLayout.CENTER);

this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.pack();

this.setLocationRelativeTo(null);

this.setResizable(false);

this.setVisible(true); }1.4实现扫雷功能翻开小方块在MineFrame类中添加属性 privatebooleangamming;//正在扫雷? privatebooleanstoped; //游戏已停止?在MineFrame类中添加set、get方法修改MineFrame类的initParameter()方法MinePanel类添加鼠标监听器类MinePanel类添加Open()方法

注册鼠标监听器1.4实现扫雷功能处理输赢以及搜索方法wins()方法lose()方法

search()方法在open()方法中调用wins()方法、lose()方法、search()方法1.4实现扫雷功能加快扫雷进程

右键单击已经翻开的方块,如果该方块临近的雷已经全部标识出来,则翻开尚未翻开的相邻方块。1.4实现扫雷功能重新开始游戏

在“开始”按钮监听器中填写处理代码。。1.5选择游戏难度级别MineFrame添加grade属性添加grade属性添加get和set方法自定义难度对话框完善菜单监听器类在选择难度级别的菜单处理分支添加相应的代码。1.6实现计时功能

UpdateTimeTask类创建UpdateTimeTask类添加UpdateTimeTask类型的属性(MinePanel类中)启动计时与终止计时启动计时:鼠标监听器中,翻开第一个小方块开始计时。终止计时

温馨提示

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

评论

0/150

提交评论