方塊類
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;
public class stone extends JButton implements MouseListener
{
private int count=0;
public int sum=0;
public boolean mark=false;
public JButton jbtn;
public boolean danger=false;
public boolean ready=false;
public int col;
public int row;
public int record=0;
public ImageIcon[] icons;
public stone(int col,int row)
{
this.col=col;
this.row=row;
init();
this.addMouseListener(this);
}
public void init()
{
icons=new ImageIcon[8];
for(int i=0;i<8;i++)
{
icons[i]=new ImageIcon("C:\\Users\\zhao\\Desktop\\java\\掃雷"+"\\"+(i+1)+".jpg");
}
setBounds(100,100,20,20);
setFont(new Font("楷體",Font.BOLD,3));
setForeground(Color.BLACK);
}
public void mouseClicked(MouseEvent e)
{
// TODO 鼠標右鍵點擊後插和取消國旗
if( (e.getModifiers() & InputEvent.BUTTON3_MASK) != 0)
{
ImageIcon icon1=new ImageIcon("C:\\Users\\zhao\\Desktop\\java\\掃雷\\國旗.jpg");
if(count%2==0)
{
setIcon(icon1);
mark=true;
}
else
{
setIcon(null);
mark=false;
}
count++;
}
// TODO 鼠標左鍵點擊
else if( (e.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
{
if(danger)
{
//TODO
ImageIcon icon1=new ImageIcon("C:\\Users\\zhao\\Desktop\\java\\掃雷\\雷.jpg");
setIcon(icon1);
}
else
{
setIcon(icons[sum]);
ready=true;
}
}
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
界面類
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class panel
{
private JFrame jfrmMain;
private Container con;
private JPanel p1;
private JPanel p2;
private stone[][] btn;
private JButton btnface;
private JButton jtxtgrade;
public JButton jtxttime;
final int max=20;
private int indexcol;
private int indexrow;
private ImageIcon[] icon;
public boolean goon=true;
public panel()
{
init();
Test();
record();
btn[indexcol][indexrow].setIcon(icon[btn[indexcol][indexrow].sum]);
new listenner();
new time();
new leiofsum();
}
//TODO
public void dealAction()
{
p1.addMouseListener
(
new MouseListener()
{
public void mouseClicked(MouseEvent e)
{
if( (e.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
{
JOptionPane.showMessageDialog(null, "dsf");
}
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
);
}
//TODO 統計各個方格周圍的雷的數目
public void record()
{
int count;
int i,j;
for(i=0;i<max;i++)
for(j=0;j<max;j++)
{
count=0;
if(!btn[i][j].danger)
{
if(i>0&&i<max-1&&j>0&&j<max-1)
{
int m;
int n;
for(m=i-1,n=j-1;n<j+2;n++)
{
if(btn[m][n].danger)
{
count++;
}
}
if(btn[i][j-1].danger)
{
count++;
}
if(btn[i][j+1].danger)
{
count++;
}
for(m=i+1,n=j-1;n<j+2;n++)
{
if(btn[m][n].danger)
{
count++;
}
}
}
else if(i==0&&j==0)
{
if(btn[i][j+1].danger)
{
count++;
}
if(btn[i+1][j+1].danger)
{
count++;
}
if(btn[i+1][j].danger)
{
count++;
}
}
else if(i==0&&j==max-1)
{
if(btn[i][j-1].danger)
{
count++;
}
if(btn[i+1][j-1].danger)
{
count++;
}
if(btn[i+1][j].danger)
{
count++;
}
}
else if(i==0&&j<max-1&&j>0)
{
int m=j;
if(btn[i][m].danger)
{
count++;
}
if(btn[i][m-1].danger)
{
count++;
}
if(btn[i][m+1].danger)
{
count++;
}
}
else if(i==max-1&&j==0)
{
if(btn[i-1][j].danger)
{
count++;
}
if(btn[i-1][j+1].danger)
{
count++;
}
if(btn[i][j+1].danger)
{
count++;
}
}
else if(i==max-1&&j==max-1)
{
if(btn[i-1][j].danger)
{
count++;
}
if(btn[i-1][j-1].danger)
{
count++;
}
if(btn[i][j-1].danger)
{
count++;
}
}
else if(i==max-1&&j>0&&j<max-1)
{
int m=j;
if(btn[i][m].danger)
{
count++;
}
if(btn[i][m-1].danger)
{
count++;
}
if(btn[i][m+1].danger)
{
count++;
}
}
else if(j==0&&i>0&&i<max-1)
{
int m=1;
if(btn[m][j].danger)
{
count++;
}
if(btn[m+1][j].danger)
{
count++;
}
if(btn[m-1][j].danger)
{
count++;
}
}
else if(j==max-1&&i>0&&i<max-1)
{
int m=1;
if(btn[m][j].danger)
{
count++;
}
if(btn[m+1][j].danger)
{
count++;
}
if(btn[m-1][j].danger)
{
count++;
}
}
}
btn[i][j].sum=count-1;
}
}
//TODO 查詢是否已經點擊第一次
public void Test()
{
int i,j;
boolean goon=true;
while(goon)
{
for(i=0;i<max;i++)
if(goon)
for(j=0;j<max;j++)
{
if(btn[i][j].ready)
{
indexcol=i;
indexrow=j;
product();
goon=false;
break;
}
}
}
}
//TODO 產生雷
public void product()
{
int col,row;
for(int i=0;i<100;i++)
{
col=(int) Math.floor(Math.random()*max);
row=(int) Math.floor(Math.random()*max);
if(btn[col][row].danger)
{
i--;
}
else
{
if(col==indexcol&&row==indexrow)
{
i--;
}
else
{
btn[col][row].danger=true;
}
}
}
}
public void init()
{
int i,j;
btn=new stone[max][max];
for( i=0;i<max;i++)
for(j=0;j<max;j++)
btn[i][j]=new stone(i,j);
jfrmMain=new JFrame("掃雷");
jfrmMain.setSize(500, 580);
jfrmMain.setResizable(false);
con=jfrmMain.getContentPane();
con.setLayout(null);
jfrmMain.setLocationRelativeTo(null);
btnface=new JButton("笑臉");
btnface.setFont(new Font("楷體",Font.PLAIN,5));
btnface.setBounds(200, 0, 50, 50);
jtxtgrade=new JButton("99");
jtxtgrade.setEnabled(false);
jtxtgrade.setBounds(0, 0, 100, 50);
jtxtgrade.setFont(new Font("楷體",Font.PLAIN,24));
jtxttime=new JButton("0");
jtxttime.setFont(new Font("楷體",Font.PLAIN,24));
jtxttime.setEnabled(false);
jtxttime.setBounds(400, 0,100, 50);
icon=new ImageIcon[8];
for(i=0;i<8;i++)
{
icon[i]=new ImageIcon("C:\\Users\\zhao\\Desktop\\java\\掃雷"+"\\"+(i+1)+".jpg");
}
p2=new JPanel();
p2.setBounds(0, 0, 500,50);
con.add(jtxtgrade);
con.add(btnface);
con.add(jtxttime);
p1=new JPanel(new GridLayout(20,20,0,0));
p1.setBounds(0, 50, 500,500);
for( i=0;i<max;i++)
for(j=0;j<max;j++)
p1.add(btn[i][j]);
con.add(p1);
con.add(p2);
jfrmMain.setVisible(true);
}
public class leiofsum extends Thread
{
public leiofsum()
{
this.start();
}
public void run()
{
int i,j;
int sums=0;
while(goon)
{
sums=0;
for(i=0;i<max;i++)
{
if(goon)
for(j=0;j<max;j++)
{
String str=String.valueOf(btn[i][j].getIcon());
if(str.equals("C:\\Users\\zhao\\Desktop\\java\\掃雷\\國旗.jpg"))
{
//TODO
sums++;
}
}
}
jtxtgrade.setText(""+(99-sums)); jtxtgrade.setText(""+(99-sums));
}
}
}
public class time extends Thread
{
public int times=0;
public time()
{
this.start();
}
public void run()
{
while(goon)
{
//TODO
jtxttime.setText(""+(++times));
try
{
sleep(1000);
} catch (InterruptedException e)
{
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
}
}
public class listenner extends Thread
{
public listenner()
{
this.start();
}
public void run()
{
int i,j;
while(goon)
{
for(i=0;i<max;i++)
{
if(goon)
for(j=0;j<max;j++)
{
String str=String.valueOf(btn[i][j].getIcon());
if(str.equals("C:\\Users\\zhao\\Desktop\\java\\掃雷\\雷.jpg"))
{
int m,n;
for(m=0;m<max;m++)
{
for(n=0;n<max;n++)
{
if(btn[m][n].danger)
{
ImageIcon icon1=new ImageIcon("C:\\Users\\zhao\\Desktop\\java\\掃雷\\雷.jpg");
btn[m][n].setIcon(icon1);
}
}
}
JOptionPane.showMessageDialog(null, "你踩到雷了!");
goon=false;
break;
}
}
}
}
}
}
public static void main(String[] args)
{
new panel();
}
}