扫雷
我以前分享的小项目和小游戏,电影购票、坦克大战、捕鱼达人、贪吃蛇等,虽然已是耳熟能详人尽皆知的项目和游戏,可是保不齐真的有人没接触过。
今天分享的这个项目,我不相信没人接触过(仅限80后-00后)。扫雷,这几乎全部电脑都有的一款超级小游戏,在全国各地的微机课上饱受欢迎,玩法紧张刺激、老小皆宜,并且还益智。今天便分享用java怎么实现这一款神做。(文末附带源码素材获取方式)
游戏介绍:
扫雷就是要把全部非地雷的格子揭开即胜利;踩到地雷格子就算失败。
游戏主区域由不少个方格组成。使用鼠标左键随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;若是点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开;若是其周围还有空白格,则会引起连锁反应;在你认为有雷的格子上,点击右键便可标记雷;若是一个已打开格子周围全部的雷已经正确标出,则能够在此格上同时点击鼠标左右键以打开其周围剩余的无雷格。
1表明1的上下左右及斜角合计有一颗雷,依次轮推,2则有2颗,3则有3颗..
在确实是炸弹的方格上点了旗子,就安全了,不是炸弹的被点了旗子,后面会被炸死的..问号就先不肯定这里有没有炸弹,不会存在点错了被炸死的情况..
有个小窍门,在数字旁同时点左键和右键能够排雷..
第一下点的必定不是雷, 左键点开,右键用旗子标记雷,同时左右键点数字能够判断周围的雷是否已经所有标出..
每一个数字表明 这个数字周围九个格里,有几颗雷!好比,1,周围九个格里只有一颗雷,2 周围九个格里就有两颗雷,以此类推 ..经过单击便可挖开方块。若是挖开的是地雷,则您输掉游戏..若是方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷..要标记您认为可能有地雷的方块,请右键单击它..
游戏区包括雷区、地雷计数器和计时器..数字就是这个方块周围的8个方块里有的雷的数量,问号是本身弄上去的,能够的地方能够弄个问号,旗子就是肯定那里有雷了..
代码介绍:
主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不一样的软硬件平台上运行。
一、设计整个游戏的结构,通常采用MVC做为整个游戏的结构,结构清晰又容易理解。
二、通常来讲,作这些游戏的时候,咱们先从底层的model开始作起。在这里,model部分就是由两张二维数组表组成,其中一张是mine,他上面放的就是一些最底层的数据,也就是说雷得分布状况。另一张表是界面表chess,就是记录一些显示给用户的数据。
三、而后要作的是对两张表的初始化,这一步很是重要,对于第一张表mine的的初始化的方法为先随机n个不重复的雷,分布到mine表中,而后,对雷周围的格子进行赋值。这里我用到方法为:遍历全部的雷,将雷周围的格子加一,这样就能达到赋数值这个工做了。其中,这里有一个难点,就是如何断定雷周围的八个格子,其实方法不少,可是大多代码繁琐,或者处理边界困难。这里我用到的方法是,计算两个格子之间的距离,若是与雷的距离为1或者根号2的话,就能肯定该格子在雷的周围。而后是对chess进行初始化,chess就是界面表,也就是说,这里的数据是直接显示给用户看的。固然,初始化部分就是直接将赋值为板,就是等待去扫雷的状态。
四、 而后就是扫雷部分,就是点击一个格子,利用jlabel的触发器将格子坐标传送到controller中去,controller中根据mine表判断点击的是什么,分三种状况,若是是雷,那就将底层的全部数据都赋到chess中,而后gameover。若是是数字,那就直接把数字赋值到chess中去。若是是0,那就很是麻烦了,这也是这个游戏中的一个难点,玩过扫雷的同窗应该都知道,点击0时,会散开周围全部的0.我这边的解决方法是,将点到的0的坐标加到list里面去,在遍历这个list,取出里面的坐标,查找他周围的8个格子,若是是0,且坐标不与list中的中的坐标重复,就将第二次查找到的坐标放到list里面,而后取list的下一个值,点击这个点,而后就是循环上面的语句。
5 、游戏中的另外一个难点是,在游戏过程当中,左右键同时点击数字,会有一个提示,这里的作法是若是若是是数字的格子,监听到左右键同时点击数字事件,查找这个格子周围的8个格子的红旗数,若是周围的红旗数正好是格子上的数字,那么就将除红旗以外的全部内容都显示出来。
素材展现:
须要游戏源码和素材练手的小伙伴能够私信我领取!
若是喜欢这样文章的能够关注我,我会持续更新,大家的关注是我更新的动力!
祝关注个人人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!java