📄 sweeper.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JComponent;
import java.lang.*;
public class Sweeper extends JFrame {
private JButton buttons[];
private JLabel bar;
private JPanel panel;
public Icon bug,bug1,bug2,bug3;
public int number=0;
private GridLayout layout;
public Container container;
public int count=0;
public int line,column=0;
public int row,vol;
public int minenum=0;
public String string="";
int flag[][];
int endingflag=0;
//System.out.println(arrymine[a][b]);
//public int arry1[][];
public Sweeper(final int mineArry[][],final int mineCountAround[][],final int test[][],final int totalOfMines) {
super("MineSweeper");
//this part defines a flag for later mounsEvents
flag =new int [12][12];
for(int a=1;a<11;a++)
for(int b=1;b<11;b++)
{
flag[a][b]=0;
}
container=getContentPane();
bar=new JLabel();
bar.setText("Mines remaining:"+totalOfMines);
number=totalOfMines;
container.add(bar,BorderLayout.NORTH);
layout=new GridLayout(10,10);
container.setBackground(Color.ORANGE);
panel=new JPanel();
panel.setLayout(layout);
bug=new ImageIcon("37.gif");
bug1=new ImageIcon("55.gif");
bug2=new ImageIcon("wenhao.gif");
bug3=new ImageIcon("wrong.gif");
//set the button for gridlayout
buttons=new JButton[101];
for(count=1;count<=100;count++){
buttons[count]=new JButton();
panel.add(buttons[count]);
buttons[count].addMouseListener(
new MouseAdapter(){
public void mouseClicked(MouseEvent event){
int count1;
for(count=1;count<=100;count++){
if(event.getSource()==buttons[count]){
line=(int)count/10;
column=count%10;
}
}
if(column==0){
//line=line;
column=10;
}
else
line=line+1;
row=line;
vol=column;
//System.out.println(line);
//System.out.println(column);
if(event.isMetaDown())
{
for(count=1;count<=100;count++){
if(event.getSource()==buttons[count])
if((mineArry[line][column]==0||mineArry[line][column]==1)& flag[line][column] ==0){
bar.setText("Mines remaining:"+(--number));
buttons[count].setIcon(bug1);
flag[line][column] =1;
}
else if((mineArry[line][column]==0||mineArry[line][column]==1)&&flag[line][column] ==1){
buttons[count].setIcon(bug2);
bar.setText("Mines remaining"+(++number));
flag[line][column]=2;
}
else if((mineArry[line][column]==0||mineArry[line][column]==1)&&flag[line][column] ==2){
buttons[count].setIcon(null);
flag[line][column]=0;
}
}
}
else
for(count=1;count<=100;count++){
if(event.getSource()==buttons[count]&flag[line][column]==0){
if(mineArry[line][column]==0){
for(int c=1;c<=10;c++)
for(int c1=1;c1<=10;c1++){
if(mineArry[c][c1]==0&&flag[c][c1]!=1)
buttons[(c-1)*10+c1].setIcon(bug1);
if(mineArry[c][c1]!=0&&flag[c][c1]==1)
buttons[(c-1)*10+c1].setIcon(bug3);
}
buttons[count].setIcon(bug);
JOptionPane.showMessageDialog(null,"Game Over");
System.exit(0);
}
else{
findmine(line,column,mineArry,mineCountAround,test,buttons);
}
}
}
}
}
);
}
container.add(panel,BorderLayout.CENTER);
setSize(500,500);
setVisible(true);
}
public int findmine(int r,int v,int[][] arry1,int[][] arry2,int[][] arry4,JButton but[]){
//int temp=0;
if(r==0||v==0||r==12||v==12){
return 0;
}
if((arry1[r][v]!=0)&&(arry4[r][v]==0))//&&arry2[r][v]==0)
{
if(arry2[r][v]==0){
endingflag++;
if (endingflag==85){
JOptionPane.showMessageDialog(null,"YOU WIN!");
System.exit(0);
}
arry4[r][v]=1;
but[(r-1)*10+v].setVisible(false);
findmine(r,v-1,arry1,arry2,arry4,but);
findmine(r-1,v,arry1,arry2,arry4,but);
findmine(r,v+1,arry1,arry2,arry4,but);
findmine(r+1,v,arry1,arry2,arry4,but);
findmine(r-1,v-1,arry1,arry2,arry4,but);
findmine(r-1,v+1,arry1,arry2,arry4,but);
findmine(r+1,v-1,arry1,arry2,arry4,but);
findmine(r+1,v+1,arry1,arry2,arry4,but);
}
else{
but[(r-1)*10+v].setText(""+arry2[r][v]+"");
switch(arry2[r][v]){
case 1: but[(r-1)*10+v].setBackground(Color.green); break;
case 2: but[(r-1)*10+v].setBackground(Color.LIGHT_GRAY); break;
case 3: but[(r-1)*10+v].setBackground(Color.red); break;
case 4: but[(r-1)*10+v].setBackground(Color.pink);break;
case 5: but[(r-1)*10+v].setBackground(Color.blue);
//checking the ending condition
}
endingflag++;
if (endingflag==85){
JOptionPane.showMessageDialog(null,"YOU WIN!");
System.exit(0);
}
arry4[r][v]=1;
}
}
return 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -