• 结对编程


    题目简介

      参考Windows 2000/XP系统提供的扫雷游戏,模拟做了一个扫雷游戏程序, 增加以下功能:在主界面中添加一个菜单栏,菜单栏中包括游戏和帮助两个菜单,其中游戏菜单中设置初级、中级、高级、自定义、、扫雷英雄榜这几个菜单项,帮助菜单中设置游戏规则菜单项。主要实现了如下算法:单击某行某列后产生不在单击处引爆的地图。出现空格后引发递归的清空算法。

    代   码   地   址: https://github.com/FBean/test3.git

    结伴人博客链接地址http://www.cnblogs.com/hutua/p/4508890.html

    结对分工情况

    李建宾 负责 MineGame.java、MineArea.java、BlockView.java、BlockView.java

    韩  宁 负责  LayMines.java、Record.java、ShowRecord.java、userDefine.java、ruleShow.java

    结对实践过程

    1、MineGame类

      MineGame类是javax.swing 包中Jframe的一人子类,并实现了ActionListener接中,

    1)成员变量

      · bar和fileMenu提供菜单操作,单击游戏菜单中的选项为“初级”“中级”“高级”“自定义”“扫雷英雄榜”“背景声音”“退出”“游戏规则”“制作人”等

      ·MineArea 是扫雷区域,提供有关扫雷的主要功能。

      ·“英雄榜”负责存放三个级别的扫雷最好成绩。

      ·showheroRecord负责显示英雄榜中的数据

      ·userdefine负责用户自定义功能

      ·VoiceShow 负责背景音乐功能

      ·ruleshow负责显示游戏规则功能

      ·authorshow负责显示作者功能

    2)方法

      ·MineGame()方法,负责完成窗口的主要功能

      ·actionPerformed(ActionEvent)方法是MineGame类实现的ActionListerer接口中的方法,该方法负责执行菜单发出的有关命令。

       用户选择菜单项可以触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作,例如将mineAreaw创建的雷区设置为初级 中级 高级等

      ·Main(String[])方法是程序的入口方法

    2、MineArea类

      效果图

      

      MineArea类是javax.swing包中JPanel容器的子类,实现了ActionListener和MouserListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。

    1)成员变量

      •Block是Block类型的数组,用来确定雷区有多少需进行扫雷的方块。

      •blockView是Blockview类型的数组,负责为block数组中的Block对象提供视图。

      •Lay是LayMines类型的对象,负责设置block数组中的哪些方块是雷或不是雷。

      •Record负责提供保存成绩的界面,是一个对话框,默认不可见。用户只有扫雷成功后(用时最少),才能看见该对话框。

      •reStart是一个按钮对象,用户单击它重新开始游戏。

      •time是计时器对象,负责计算用户的用时。

    2)方法

      •initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度,高度,雷的数目以及雷区的级别。

      •actionPerformed(ActionEvent)是MIneArea类实现ActionListener接口中的方法。当用户单击blockView中的某个方块时,actionPerformed(ActionEvent)方法

        负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷,actionPerformed(ActionEvent)方法将使用户输掉本局,若该方块下又雷,

        actionPerformed(ActionEvent)方法将显示BlockView对象中的标签,该标签上是一个数字,该数字代表当前方块的周围的8个方块中总共有多少颗雷

      •show()方法是一个递归方法。actionPerformed(ActionEvent)方法执行时将调用show方法进行扫雷。

      •mousePress(MouseEvent)方法是MineArea类实现的MouseListener接口中的方法,当用户按下鼠标右键时,mousePress(MouseEvent)方法负责让方块上

        显示一个探雷标记。

      •inquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让record对话框可见。所谓扫雷成功是指不仅找到了全部的雷而且用时最少。

    3、Block

      Block对象负责封装雷区中方块中的数据以及对这些数据的操作,外观效果由Blockview负责提供

      Block类创建的对象是数组block的单元的对象。Block型数组block是MineArea类的重要成员之一。

    1)成员变量

      ·name是方块上的名字。

      ·aroundMineNumber是方块周围雷的数目。

      ·mineIcon是方块上雷的图标。

      ·sMine用来表示方块是否是雷。

      ·isMark用来表示方块是否被标记。

      ·isOpen用来表示方块是否被挖开。

    2)方法

      ·setAroundMineNumber(int)方法用来设置aroundMineNumber的值。

      ·getAroundMineNumber()方法用来获取aroundMineNumber的值。

    4、BlockView类

      BlockView创建的对象负责为Block对象提供视图,以便用户通过该视图与Block对象交互。BlockView对象使用一个标签和按钮为Block对象提供视图,标签和按钮按着卡片布局层叠在一起,默认状态按钮遮挡住标签。当用户单击按钮后,如果Block对象时雷,BlockView对象中的标签显示的事雷的图标;如果Block对象不是雷,标签显示的是周围雷的总数。

    1)成员变量

      ·blockNameOrIcon用来显示Block对象的name,number和mineIcon属性。

      ·blockCover用来遮挡blockNameOrIcon。

      ·card卡片布局

    2)方法

      ·giveView(Block block)方法给参数指定的Block对象提供视图,如果Block对象的isMine属性为true,即方块是雷,那么blockNameOrIcon标签上设置的文本就是

        Block对象的name属性的值,同时blockNameOrIcon标签上设置的图标就是Block对象的mineIcon指定的图标。如果Block对象的isMine属性为false,

        blockNameOrIcon标签上设置的图标就是Block对象的aroundMineNumber属性的值,及周围雷的数目

      ·seeblockNameOrIcon()方法让用户看见视图中的标签,无法看见按钮。

      ·seeblockNameOrIcon(0方法让用户看见视图中的按钮,无法看见标签。

    测试情况

       在程序代码基本完成后,经过不断的调试与修改,最后测试本次所设计的扫雷游戏能够正常运行,在基本功能与画面上与Windows自带的扫雷游戏没有太大差别,没有出现明显的错误和漏洞,但是在一些细节方面仍然需要完善,比如在游戏中可以加入一些不同语音的提示,在游戏完成和失败的时候可以弹出一些小的Flash动画,还有就是可以扩展一下扫雷英雄榜的功能等。总的来说本次设计在功能上已经基本达到要求,其他细节方面有待以后完善

     整体运行结果图

      游戏菜单

       

      帮助菜单

       

      自定义难度

       

       英雄榜

        

      游戏规则

       

    问题及心得

     问题

     1、界面的美观性做的不太好,比如说布局,颜色搭配有待改进

     2、MineGame的初始化界面大小难以控制,特别是在自定义的情况下,需在手动改面窗口的大小。

     心得

      这个扫雷游戏是模拟微软系统自带的扫雷游戏,虽然并不完全一样。在编程过程中也遇到很多问题,有些问题比较简单但就不知道错在哪里,有些大问题之道在哪就是不知道怎么办才好,后来经过自己的不断调试,和队友的帮助这个扫雷游戏终于大功告成。 

      经过编写这个扫雷游戏,我认识到应该注意细节问题,虽然是很小的问题,但可以提高自己编程的能力,而且还可以培养自己与他人合作编程的能力,同时还可以为以后的编程积累经验。编写完这个扫雷游戏,我发现如果自己来单独来编写这个游戏是有些吃力的,但是结伴编程便可解决这个问题了。

    夜落乌啼霜满天,江枫渔火对愁眠。
  • 相关阅读:
    【win7】安装开发环境
    【php-fpm】启动PHP报错ERROR: [pool www] cannot get uid for user 'apache'
    【apache2】AH00543: httpd: bad user name apache
    【gedit】 显示行号
    关于golang.org/x包问题
    国内的go get问题的解决
    php7函数,声明,返回值等新特性介绍
    php5.6.x到php7.0.x特性
    PHP5.4.0新特性研究
    【git】如何去解决fatal: refusing to merge unrelated histories
  • 原文地址:https://www.cnblogs.com/FBean/p/4508957.html
Copyright © 2020-2023  润新知