介绍
这篇文章主要讲解了Java语言实现扫雷游戏的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
进口javax.swing.JButton; 公共类色延伸JButton { 私有静态最终长serialVersionUID l=1; 保护int行; 保护int上校; }
然后我们就可以在GamePanel类中添加按钮了
//初始化按钮,将JLabel覆盖住 私人空间initButtons () {//循环生成按钮 for (int i=0;我& lt;行;我+ +){ for (int j=0;j & lt;关口;j + +) { 色btn=new色();//根据JLabel大小设置按钮的大小边界 btn。我* BLOCKHEIGHT setBounds (j * BLOCKWIDTH BLOCKWIDTH, BLOCKHEIGHT); this.add (btn);//将按钮存在类变量中(当然,实际上存的是对象的引用地址) 按钮[我][j]=btn; btn。行=我; btn。坳=j;//给按钮添加监听器,注册点击事件//(单机按钮时,将执行内部类ActionListener()中的actionPerformed (ActionEvent e)方法) btn。addActionListener(新ActionListener () { @Override 公共空间actionPerformed (ActionEvent e) {//TODO自动生成方法存根 }}); } } }
按钮全部覆盖以后,显示如下:
最后,我们就差单击按钮后判断按钮底下是炸弹,空白,还是数字,如果下面是数字的话,我们就打开按钮(也就是将按钮设置为不可见,就可以看见JLabel了);如果单击的按钮下面是空白的话先要将它打开,并且判断它周围的八个方块是否为空的,进入递归调用。
首先,要判断每个小方块周围的八个方块,就要先判断它是否越界,我们设为一个类变量作为坐标偏移量
私人最终int[][]抵消={{1 1},{0,1},{1},{1,0},{1},{0,1},{1},{1,0}};
判断是否越界:
//判断位置是否越界 私人布尔验证(int, int坳){ 返回行祝辞=0,,行& lt;这一点。行,,卡扎菲在=0,,坳& lt;this.cols; }
然后我们写单击按钮时的逻辑方法
//单击按钮时打开或成片打开 私人空间开放(MyButton btn) {//先将当期按钮设置为不可见,即打开了按钮 btn.setVisible(假);//判断按钮中是否为数字还是空 开关(标签[btn.row] [btn.col] .getText ()) {//如果是炸弹则将全部按钮都打开,游戏结束 情况下“*”;: for (int i=0;我& lt;行;我+ +){ for (int j=0;j & lt;关口;j + +) { 按钮[我][j] .setVisible(假); } } 打破;//如果是空的则将他周围空的按钮都打开,进入递归 情况下,“: (int[]:抵消){ int启动=btn。行+ [0]; int newCol=btn。坳+ [1]; 如果(验证(启动,newCol)) { 色sButton=按钮【启动】(newCol); 如果(sButton.isVisible ()) { 打开(sButton); } } } 默认值: } }
最后,我们在initButtons方法的单击事件中引用这个方法
btn。addActionListener(新ActionListener () { @Override 公共空间actionPerformed (ActionEvent e) {//TODO自动生成方法存根 开放((色)e.getSource ()); }});
大功告成,我们的简易扫雷游戏正式完成了!
看完上述内容,是不是对Java语言实现扫雷游戏的方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。