📄 mainclass.java
字号:
//Class Description:this class gererate the main frame add initialize the components
// and data
//Auther:YuanBaowang Date:5.19 CodeName:holmes ID:3005218142 Class:5
import java.awt.*;
import javax.swing.*;
public class MainClass{
static JFrame frame;static int mineRemaining=0;
static JLabel label;static int mineNumber=10;
static int r=10,l=10;static int remaining;
static Point1[] location;static Point1[][] matrix;
static JButton1[][] button;static int safePlace=0;
public MainClass(int row,int column,int mine){
MainClass.frame=new JFrame("MineSweeper");
frame.setVisible(true);frame.setBounds(200,200,500,500);
remaining=mine;r=row;l=column;
mineNumber=mine;mineRemaining=mine;safePlace=r*l-mine;
location=new Point1[mineNumber];matrix=new Point1[r][l];
int num1,num2;
Point[] test=new Point[mineNumber];
for(int i=0;i<test.length;++i)
test[i]=new Point(-1,-1);
for(int i=0;i<mineNumber;++i){
num1 = (int)((r)*Math.random());num2 = (int)((l)*Math.random());
if(judge(new Point(num1,num2),test)){i--;continue;}
else{
test[i]=new Point(num1,num2);
location[i]=new Point1(num1,num2,-1);
System.out.println(num1+" "+num2);
}
}
for(int i=0;i<r;++i)
for(int j=0;j<l;++j)
{
matrix[i][j]=new Point1(i,j,0);
}
setMatrix(matrix,location);
System.out.println(MainClass.safePlace);
}
public static void main(String args[]){
MainClass m=new MainClass(10,10,10);
JMenuBar menuBar=new JMenuBar();
JMenu menu1,menu2;
JMenuItem menuItem1,menuItem2,menuItem3;
menuItem1=new JMenuItem("Restart");
menuItem1.addActionListener(new MenuHandler());
menuItem2=new JMenuItem("Quit");
menuItem2.addActionListener(new MenuHandler());
menuItem3=new JMenuItem("Description");
menuItem3.addActionListener(new MenuHandler());
menu1=new JMenu("Game");menu2=new JMenu("Help");
menu1.add(menuItem1);menu1.add(menuItem2);menu2.add(menuItem3);
menuBar.add(menu1);menuBar.add(menu2);
frame.setJMenuBar(menuBar);
frame.setLayout(new BorderLayout());
JPanel container=new JPanel();
container.setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p1=new JPanel();
label=new JLabel("Mines remaining:"+mineRemaining);
p1.add(label);
container.add(p1,BorderLayout.NORTH);
JPanel p2=new JPanel();p2.setLayout(new GridLayout(r,l));
container.add(p2,BorderLayout.CENTER);
frame.add(container,BorderLayout.CENTER);
button=new JButton1[r][l];
for(int i=0;i<r;++i)
for(int j=0;j<l;++j){
button[i][j]=new JButton1("",i,j,MainClass.matrix[i][j].getValue());
button[i][j].addMouseListener(button[i][j]);
p2.add(button[i][j]);
}
System.out.println(r+" "+l);
}
static int getNum(int a,int b) throws NullPointerException{
return MainClass.matrix[a][b].getValue();
}
boolean isMine(Point1 p,Point1[] pt){
for(int i=0;i<pt.length;++i){
if(p.getX()==pt[i].getX()&&p.getY()==pt[i].getY()){return true;}
}
return false;
}
void setMatrix(Point1[][] m,Point1[] p){
for(int i=0;i<m.length;++i)
for(int j=0;j<m[i].length;++j){
if(isMine(m[i][j],p)){m[i][j].setValueOf(-1);}
else
{
if(i-1>=0){
if(j-1>=0&&isMine(m[i-1][j-1],p))
m[i][j].increase();
if(isMine(m[i-1][j],p))
m[i][j].increase();
if(j+1<m[i].length&&isMine(m[i-1][j+1],p))
m[i][j].increase();
}
if(j-1>=0&&isMine(m[i][j-1],p))
m[i][j].increase();
if(j+1<m[i].length&&isMine(m[i][j+1],p))
m[i][j].increase();
if(i+1<m.length){
if(j-1>=0&&isMine(m[i+1][j-1],p))
m[i][j].increase();
if(isMine(m[i+1][j],p))
m[i][j].increase();
if(j+1<m[i].length&&isMine(m[i+1][j+1],p))
m[i][j].increase();
}
}
}
}
boolean judge(Point a,Point b[]){
for(int i=0;i<b.length;++i){
if(b[i].getX()==a.getX()&&b[i].getY()==a.getY())
return true;
}
return false;
}
public static void endMine(){
for(int i=0;i<location.length;++i){
int x=location[i].getX();int y=location[i].getY();
button[x][y].setText("#");
button[x][y].setBackground(Color.RED);
}
}
static boolean indexOut(int a,int b){
if(a>=0&&a<r&&b>=0&&b<l)return true;
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -