⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainclass.java

📁 java的扫雷程序
💻 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 + -