Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
扫雷者Java继承_Java_Minesweeper - Fatal编程技术网

扫雷者Java继承

扫雷者Java继承,java,minesweeper,Java,Minesweeper,这个项目我有5门课,按钮雷区图形用户界面菜单栏游戏 按钮是一个单独的地雷单元 雷区包含一个2d按钮阵列,以及涉及所有按钮的操作 GUI是雷场网格上方的部分,显示重置按钮、经过的时间以及剩余的标志数量 Game将所有其他类放在面板中,并将它们放在小程序中。这里没有游戏逻辑 这是我的照片的截图 我在使用继承时遇到了问题。如果我能解决这个问题,我也能解决其他问题。它与调用超类中的方法有关 我的一个问题: 当右键单击按钮我的单元格时,鼠标侦听器会拾取该按钮,并将JButton的文本更改为“F”作为标志。

这个项目我有5门课,
按钮
雷区
图形用户界面
菜单栏
游戏

按钮
是一个单独的地雷单元

雷区
包含一个2d按钮阵列,以及涉及所有按钮的操作

GUI
是雷场网格上方的部分,显示重置按钮、经过的时间以及剩余的标志数量

Game
将所有其他类放在面板中,并将它们放在小程序中。这里没有游戏逻辑

这是我的照片的截图

我在使用继承时遇到了问题。如果我能解决这个问题,我也能解决其他问题。它与调用超类中的方法有关

我的一个问题:

当右键单击
按钮
我的单元格时,鼠标侦听器会拾取该按钮,并将
JButton
的文本更改为“F”作为标志。但是,我想更新可用标志数量的计数器,这是
雷区
类中的一个变量。最后,我希望
GUI
类侦听对该变量的更改,并更新
JLabel

按钮的
鼠标侦听器中

 if (e.getButton() == MouseEvent.BUTTON3)
        {
           advanceCurrentState();     

           if (currentState == "FLAG")
             super.setNumFlagsRemaining(-1); //update the Minefields variable
        }
回到
雷区

   public void setNumFlagsRemaining(int delta)
    {
        numFlagsRemaining += delta;
    }

但这不起作用。调试时,
super.setNumFlagsRemaining(-1)
正在创建
Minefield
的新实例,我无法更新super类中的变量。我原以为它会更新Minefield的现有对象,但我读到Java不是通过引用传递的,所以我对如何做感到困惑。如果您需要查看其他代码,请这样说,我尽量不让这篇文章用5个完整的类来混乱,并说“修复它”。

您没有提供足够的代码,所以我只能在这里猜测。 我想你把我搞糊涂了 它实际上意味着从继承的超类调用方法。 我怀疑JButton是否继承了你们班雷区的任何东西。通常情况是相反的


字段的计数也存储并显示在JLabel中。因此,实际上,您必须调用具有此JLabel并负责总计数的类的方法。

这可能会有所帮助:调用
super.setNumFlagsRemaining(-1)
不是创建新的雷区实例,而是更新当前雷区实例。在类中使用super一词指的是同一个实例,但它是父类型。我是否正确理解
按钮
扩展了
雷区
,但同时
雷区
包含一个二维数组的
按钮
呢?为什么要这样做?Tbh
按钮
不应延伸
雷区
。如果你在
雷区
中有完整的游戏逻辑,那么每个
按钮
将处理/修改自己的游戏逻辑。。。?我不理解这个层次结构…好吧,按照我的想法:雷区类只用于在开始时放置随机地雷,并遍历每个按钮并计算相邻地雷,将该信息存储在该按钮的实例中。按钮正在更改其状态,并具有布尔值isMine