import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class NewMineGame extends Frame implements ActionListener {
private static final int ROW = 8;
private static final int COL = 8;
private Button[][] buttonGrid;
private int[][] mineGrid;
private RunClockPanel runClock;
private Panel minePanel;
public static void main(String[] args) {
NewMineGame newMineGame = new NewMineGame();
newMineGame.setVisible(true);
}
public NewMineGame() {
super("Mine Game");
RunClockPanel runClock = new RunClockPanel();
buttonGrid = new Button[ROW][COL];
mineGrid = new int[ROW][COL];
minePanel = new Panel();
setSize (340, 600);
setLayout(new GridLayout(2,1));
minePanel.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 Button();
}
for (int i = 0; i < buttonGrid.length; i++)
for (int j = 0; j < buttonGrid[0].length; j++) {
minePanel.add(buttonGrid[i][j]);
buttonGrid[i][j].addActionListener(this);
}
add(runClock);
add(minePanel);
addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
NewMineGame.this.dispose();
}
}
);
}
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].setLabel("die");
else buttonGrid[i][j].setLabel(mineNum(i,j)+"");
repaint();
}
}
}
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];
}
}
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class RunClockPanel extends Panel implements Runnable, ActionListener {
Label timeDisp = new Label(" 0:0 ", Label.CENTER);
Thread timerThread;
int time = 0;
Button btReset = new Button("Reset");
Button btStart = new Button("Start");
Button btStop = new Button("Stop");
public RunClockPanel() {
Panel p = new Panel();
setLayout(new GridLayout(2, 1));
p.setLayout(new GridLayout(1, 3));
btReset.setEnabled(false);
btStop.setEnabled(false);
p.add(btReset);
p.add(btStart);
p.add(btStop);
add(p);
btReset.addActionListener(this);
btStart.addActionListener(this);
btStop.addActionListener(this);
timeDisp.setFont(new Font("Courier", Font.BOLD, 50));
add("Center", timeDisp);
}
public void stop() {
Thread t = timerThread;
if (t != null) {
timerThread = null;
try { t.join(); } catch (Exception e) {}
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btReset) {
stop();
timeDisp.setText("0:0");
time = 0;
btReset.setEnabled(false);
btStart.setEnabled(true);
btStop.setEnabled(false);
btStart.setLabel("Start");
} else if (e.getSource() == btStop) {
stop();
btReset.setEnabled(true);
btStart.setEnabled(true);
btStop.setEnabled(false);
btStart.setLabel("Continue");
} else if (e.getSource() == btStart) {
timerThread = new Thread(this);
timerThread.start();
btReset.setEnabled(false);
btStart.setEnabled(false);
btStop.setEnabled(true);
btStart.setLabel("Continue");
}
}
public void run() {
while (timerThread == Thread.currentThread()) {
timeDisp.setText("" + time/600 + ":" + (time/10)%60);
time++;
try { Thread.sleep(100); } catch (Exception e) {};
}
}
}
| Previou page | Next page |