0

I'm attempting to build Minesweeper in Java (Using Eclipse, if that matters for any reason whatsoever) and while making it, I've encountered an issue I haven't had before.

The window that's supposed to show up whenever a mine is pressed is opened... A lot. The window is only meant to open once and prompt the user to either continue or give up.

Important to note this only occurs whenever a mine is pressed on the top row of buttons. Not entirely sure if this is important, but the amount of times a window pops-up is 11. There are also no error codes given.

The following chunk of code is for whenever a user clicks on a mine.

//These are here just for clarification
private int continues = 3;
private Listen l = new Listen();

private class Listen extends MouseAdapter implements ActionListener
{
public void actionPerformed(ActionEvent e) 
        {
            Object source = e.getSource();
            for (int i = 0; i < 9; i++)
            {
                for (int j = 0; j < 9; j++)
                {
                    if (source == mines[i][j])
                    {
                        //Though probably not optimal, I created mines based around a number referred to as difficulty
                        if (minePlacement[i][j] <= difficulty)
                        {
                            Frame f = new Frame();
                            Label L = new Label("You have " + continues + " continues remaining.");
                            Button B = new Button ("Try Again?");
                            Label La = new Label("You're out of continues...");
                            Button But = new Button("Exit");
                            f.setLayout(new FlowLayout());
                            B.addActionListener(new ActionListener() 
                            {
                                @Override
                                public void actionPerformed(ActionEvent e) 
                                {
                                    f.dispose();
                                }
                            });
                            if (continues <= 0)
                            {
                                f.add(La);
                                f.add(But);

                                /*
                                For clarification,
                                This actionListener is used
                                 solely to do System.exit(0);
                                */
                                But.addActionListener(li);

                                f.setSize(250,125);
                            }
                            else
                            {
                                f.add(L);
                                f.add(B);
                                f.setSize(250,100);
                            }
                            f.setLocationRelativeTo(null);
                            f.setAlwaysOnTop(true);
                            f.setVisible(true);
                            f.setTitle("You Hit A Mine!");
                            continues--;

                        }

This following chunk of code is used in order to build the board itself.

for (int i = 0; i < rows; i++)
        {
            int x = (int) ((Math.random() + .1) * 10);
            minePlacement[i][0] = x;
            mines[i][0] = new Button();
            mines[i][0].addMouseListener(l);
            mines[i][0].addActionListener(l);
            add(mines[i][0]);

            for (int j = 0; j < cols; j++)
            {
                int y = (int) ((Math.random() + .1) * 10);
                minePlacement[i][j] = y;

                mines[i][j] = new Button();

                mines[0][j].addMouseListener(l);
                mines[0][j].addActionListener(l);
                mines[i][j].addMouseListener(l);
                mines[i][j].addActionListener(l);

                add(mines[i][j]);
        }

I've tried looking for other posts which may answer my question, though as it stands, I have failed to find any other posts that have been coded in Java. I've mainly found them in C++ or C, to which I don't understand how the solution was brought about.

I'd like to know if there's any way to set a limit on the amount of windows on the screen, or if there's a way to prevent the window from popping up more times than expected.

Thanks in advance!

Raj
  • 21
  • 8

0 Answers0