I have 5 classes for this project, Button
Minefield
GUI
MenuBar
Game
.
Button
is an individual mine cell.
Minefield
contains a 2d array of buttons, and operations that concern all of the buttons.
GUI
is the portion above the MineField grid, displaying the reset button, time lapsed and how many flags remain,
Game
puts all of the other classes in Panels and places them in the applet. No game logic here.
Here is a screenshot of my applet
I'm having problems when it comes to using inheritance. If I can solve this issue, I can do the other problems too. It has to do with invoking a method in the super class.
One of my problems:
When a Button
mine cell is right-clicked, the mouse listener picks it up and changes the text of the JButton
to "F" for flag. However, I want to update the counter of how many flags are available, which is a variable in the Minefield
class. Finally, I want the GUI
class to listen for changes to that variable and update the JLabel
.
In the MouseListener
for Button
:
if (e.getButton() == MouseEvent.BUTTON3)
{
advanceCurrentState();
if (currentState == "FLAG")
super.setNumFlagsRemaining(-1); //update the Minefields variable
}
Back in Minefield
:
public void setNumFlagsRemaining(int delta)
{
numFlagsRemaining += delta;
}
But this doesn't work. When I am debugging, super.setNumFlagsRemaining(-1)
is creating a new instance of Minefield
and I cannot update the variable inside the super class. I thought that it would update the existing object of Minefield, but I read that Java does not pass by reference, so I was confused as how to do it. If you need to see additional code please say so, I tried to not clutter this post with 5 whole classes and say, "fix it".