import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JMineGame extends JApplet implements ActionListener {
private static final int ROW = 8;
private static final int COL = 8;
private JButton[][] buttonGrid = new JButton[ROW][COL];
private int[][] mineGrid = new int[ROW][COL];
private Container container;
private ImageIcon imageIcon;
public void init() {
container = getContentPane();
imageIcon = new ImageIcon(JMineGame.class.getResource("mine.GIF"));
container.setLayout(new GridLayout(ROW,COL));
for (int i = 0; i < buttonGrid.length; i++)
for (int j = 0; j < buttonGrid[0].length; j++) {
mineGrid[i][j] = (Math.random() < 0.8 ? 0 : 1);
buttonGrid[i][j] = new JButton();
}
for (int i = 0; i < buttonGrid.length; i++)
for (int j = 0; j < buttonGrid[0].length; j++) {
container.add(buttonGrid[i][j]);
buttonGrid[i][j].addActionListener(this);
}
}
public void actionPerformed(ActionEvent e)
{
for (int i = 0; i < buttonGrid.length; i++)
for (int j = 0; j < buttonGrid[0].length; j++) {
if (e.getSource().equals(buttonGrid[i][j])) {
if (mineGrid[i][j] == 1)
buttonGrid[i][j].setIcon(imageIcon);
else buttonGrid[i][j].setText(mineNum(i,j)+"");
}
}
}
private int mineNum(int x, int y)
{
if ((x == 0) && (y == 0))
return mineGrid[x][y+1] + mineGrid[x+1][y+1] + mineGrid[x+1][y];
else
if ((x == 0) && (y == buttonGrid[0].length-1))
return mineGrid[x+1][y] + mineGrid[x][y-1] + mineGrid[x+1][y-1];
else
if (x == 0)
return mineGrid[x][y+1] + mineGrid[x+1][y+1] + mineGrid[x+1][y] +
mineGrid[x][y-1] + mineGrid[x+1][y-1];
else
if ((y == 0) && (x == buttonGrid.length-1))
return mineGrid[x-1][y+1] + mineGrid[x][y+1] + mineGrid[x-1][y];
else
if (y == 0)
return mineGrid[x-1][y+1] + mineGrid[x][y+1] + mineGrid[x+1][y+1] +
mineGrid[x-1][y] + mineGrid[x+1][y];
else
if ((x == buttonGrid.length-1) && (y == buttonGrid[0].length-1))
return mineGrid[x-1][y] + mineGrid[x-1][y-1] + mineGrid[x][y-1];
else
if (x == buttonGrid.length-1)
return mineGrid[x-1][y+1] + mineGrid[x][y+1] + mineGrid[x-1][y] +
mineGrid[x-1][y-1] + mineGrid[x][y-1];
else
if (y == buttonGrid[0].length-1)
return mineGrid[x-1][y] + mineGrid[x+1][y] + mineGrid[x-1][y-1] +
mineGrid[x][y-1] + mineGrid[x+1][y-1];
return mineGrid[x-1][y+1] + mineGrid[x][y+1] + mineGrid[x+1][y+1] +
mineGrid[x-1][y] + mineGrid[x+1][y] + mineGrid[x-1][y-1] +
mineGrid[x][y-1] + mineGrid[x+1][y-1];
}
}