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

📄 mineframe.java

📁 主要用java的Swing
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		menuGame.addSeparator();
		menuGame.add(TCItem);
		/**
		 * 关于菜单
		 */
		menuAbout.add(BZItem);
		menuAbout.addSeparator();
		menuAbout.add(GYItem);
		/**
		 *  游戏菜单绑定键盘事件
		 */
		menuGame.setMnemonic(KeyEvent.VK_G);
		KSItem.setMnemonic(KeyEvent.VK_N);
		CJItem.setMnemonic(KeyEvent.VK_B);
		ZJItem.setMnemonic(KeyEvent.VK_I);
		GJItem.setMnemonic(KeyEvent.VK_E);
		ZDYItem.setMnemonic(KeyEvent.VK_C);

		YXBItem.setMnemonic(KeyEvent.VK_T);
		TCItem.setMnemonic(KeyEvent.VK_X);

		KSItem.addActionListener(this);
		CJItem.addActionListener(this);
		ZJItem.addActionListener(this);
		GJItem.addActionListener(this);
		ZDYItem.addActionListener(this);
		YXBItem.addActionListener(this);
		TCItem.addActionListener(this);
		/**
		 *  关于菜单绑定键盘事件
		 */
		menuAbout.setMnemonic(KeyEvent.VK_A);
		BZItem.setMnemonic(KeyEvent.VK_H);
		GYItem.setMnemonic(KeyEvent.VK_A);

		BZItem.addActionListener(this);
		GYItem.addActionListener(this);
		/**
		 *  添加到menuBar
		 */
		menuBar.add(menuGame);
		menuBar.add(menuAbout);
		setJMenuBar(menuBar);
	}
	/*********************
	 *  选择菜单时触发的事件方法
	 */
	public void actionPerformed(ActionEvent e)
	{
		String choice=((JMenuItem)e.getSource()).getText().trim();
		if(choice.equals("开局(N)"))
		{
			dispose();
			write();
			new MineFrame(tempmineNumber,rows,cols);
		}
		if(choice.equals("初级(B)"))
		{
			dispose();
			write();
			new MineFrame(10,9,9);
		}
		if(choice.equals("中级(I)"))
		{
			dispose();
			write();
			new MineFrame(40,16,16);
		}
		if(choice.equals("高级(E)"))
		{
			dispose();
			write();
			new MineFrame(99,16,30);
		}
		if(choice.equals("自定义(C)"))
		{
			write();
			new ZDYDialog(MineFrame.this,"自定义雷区", true);
		}

		if(choice.equals("扫雷英雄榜(T)"))
		{
			new XYBDialog(MineFrame.this,"扫雷英雄榜", true);
		}
		if(choice.equals("退出(X)"))
		{
			System.exit(0);
		}
		if(choice.equals("关于本程序(A)"))
		{
			new about.About(MineFrame.this,"关于扫雷",true);
		}
		if(choice.equals("帮助主题(H)"))
		{
			try
			{
				Runtime r=Runtime.getRuntime();
				Process p=r.exec("hh.exe ..\\winmine.chm");
			}catch(Exception err){}
		}
	}

    /**************************
     *  点击开始按钮的样式,以及事件的处理
     */
	class beginBtnFace implements MouseListener
	{
		public void mouseClicked(MouseEvent e)
		{
			dispose();
			//MineFrame.this.remove(pane2);
			write();
			new MineFrame(tempmineNumber,rows,cols);
			//pane2();
			//constructMineBtn();

		}
		public void mouseEntered(MouseEvent e){}
		public void mouseExited(MouseEvent e){}
		public void mousePressed(MouseEvent e)
		{
			Object obj=e.getSource();
			JButton bb=(JButton)obj;
			if(bb==beginBtn)
			{
				beginBtn.setBorder(new BevelBorder(BevelBorder.LOWERED));
			}
		}
		public void mouseReleased(MouseEvent e)
		{
			Object obj=e.getSource();
			JButton bb=(JButton)obj;
			if(bb==beginBtn)
			{
				beginBtn.setBorder(new BevelBorder(BevelBorder.RAISED));
			}
		}
	}
	/**********************
	 *  鼠标点击按钮时的触发事件
	 */
	class MouseE implements MouseListener
	{
		MineButton mbtn;

		public void mouseClicked(MouseEvent e)
		{
			bttmp=mbtn;
			mbtn=(MineButton)e.getSource();
			if(!t.isRunning() && bool)
			{
				t.start();
			}

			if(bool) //如果t停止的话,就不进行事件的判断
			{
				doubleClieckID+=e.getButton();  //接受点击的值

				if(e.getButton()==MouseEvent.BUTTON1 && mbtn.id<20)
				{
					MouseLeft(e);
				}
				else if(e.getButton()==MouseEvent.BUTTON3)
				{
					MouseRight();
				}
			}
		}
		public void mouseEntered(MouseEvent e){}
		public void mouseExited(MouseEvent e){}
		public void mousePressed(MouseEvent e)
		{
			mbtn=(MineButton)e.getSource();
			if(t.isRunning())
			{
				beginBtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/99.jpg")));

			}
			for(int i=0;i<rows;i++)
			{
				for(int j=0;j<cols;j++)
				{
					if(mbtn==mineBtn[i][j] & mineBtn[i][j].isEnabled())
					{
						mineBtn[i][j].setBorder(new EmptyBorder(new Insets(1,1,1,1)));
						mineBtn[i][j].setBackground(new Color(220,220,220));
					}
				}
			}
		}
		public void mouseReleased(MouseEvent e)
		{
			mbtn=(MineButton)e.getSource();
			if(t.isRunning())
			{
				beginBtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/3.jpg")));

			}
			for(int i=0;i<rows;i++)
			{
				for(int j=0;j<cols;j++)
				{
					if(mbtn==mineBtn[i][j] & mineBtn[i][j].isEnabled())
					{
						mineBtn[i][j].setBorder(new BevelBorder(BevelBorder.RAISED));
						mineBtn[i][j].setBackground(new Color(220,220,220));
					}
				}
			}
		}
		/**
		 *  点击鼠标左键触发的方法
		 */
		public void MouseLeft(MouseEvent e)
		{
			/**
			 *  用id来判断,如果不是雷的话,应显示数字
			 *	把按钮的图片重新设置
			 */
			if(mbtn.id==10){mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/0.gif")));mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/0.gif")));mbtn.id-=10;}
			if(mbtn.id==11){mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/1.gif")));mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/1.gif")));mbtn.id-=10;}
			if(mbtn.id==12){mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/2.gif")));mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/2.gif")));mbtn.id-=10;}
			if(mbtn.id==13){mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/3.gif")));mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/3.gif")));mbtn.id-=10;}
			if(mbtn.id==14){mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/4.gif")));mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/4.gif")));mbtn.id-=10;}
			if(mbtn.id==15){mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/5.gif")));mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/5.gif")));mbtn.id-=10;}
			if(mbtn.id==16){mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/6.gif")));mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/6.gif")));mbtn.id-=10;}
			if(mbtn.id==17){mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/7.gif")));mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/7.gif")));mbtn.id-=10;}
			if(mbtn.id==18){mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/8.gif")));mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/8.gif")));mbtn.id-=10;}
			mbtn.setBorder(new EmptyBorder(new Insets(1,1,1,1)));
			mbtn.setEnabled(false);
			win();
			/**
			 *  如果点击是雷的话,把剩余的雷显示出来,同时游戏结束
			 *  把开始按钮的图片也重新设置
			 */
			for(int i=0;i<rows;i++)
			{
				for(int j=0;j<cols;j++)
				{
					if(mbtn.id==19)
					{
						mbtn.setEnabled(false);
						mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/DiLei_Bomd.gif")));
						mbtn.setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/DiLei_Bomd.gif")));
						if(mineBtn[i][j].id==19)
						{
							mineBtn[i][j].setEnabled(false);
							mineBtn[i][j].setIcon(new ImageIcon(MineFrame.class.getResource("image/DiLei.gif")));
							mineBtn[i][j].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/DiLei.gif")));
							beginBtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/88.jpg")));
							e.consume();
							if(t.isRunning())
							{
								t.stop();
								bool=false;
							}
						}
					}
					if(mbtn==mineBtn[i][j])  //如果点击的按钮是空的话,调用递归方法循环搜索
					{
						if(mbtn.id==0)
						{
							DiGui(i,j);
							return;
						}
					}
				}
			}
		}
		/**
		 * 点击鼠标右键触发的方法
		 */
		 public void MouseRight()
		 {
			 if(mbtn.isEnabled())
			 {
				for(int i=0;i<rows;i++)
				{
					for(int j=0;j<cols;j++)
					{
						if(mbtn==mineBtn[i][j])
						{
							if(mbtn==mineBtn[i][j] & mineBtn[i][j].id<20)
							{
								mbtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/FLAG.GIF"))); //雷,插旗
								mineBtn[i][j].id+=10;
								mineNumber--;
								if(mineNumber==0)
								{
									win();
								}
								setmineNumberLable();  //设置显示雷数的标签框的文本

							}
							else if(mbtn==mineBtn[i][j] & mineBtn[i][j].id>=20)
							{
								mbtn.setIcon(null);
								mineBtn[i][j].id-=10;
								mineNumber++;
								setmineNumberLable();  //设置显示雷数的标签框的文本
							}
						}
					}
				}
			 }
		 }
		/**
		 *用于判断标签框上显示雷的数字
		 */
		public void setmineNumberLable()
		{
			if(mineNumber<10)
			{
				lb1.setText("00"+mineNumber);
				if(mineNumber<0)
				{
					lb1.setText("-0"+Math.abs(mineNumber));
					if(mineNumber<=-10)
					{
						lb1.setText(""+mineNumber);
					}
				}
			}
			else
			{
				lb1.setText("0"+mineNumber);
			}
		}
	}

	/**
	 *  判断是否赢了
	 */
	 public void win()
	 {
		int winMineNumber=0;
		int yyy=0;
		for(int k=0;k<rows;k++)
		{
			for(int l=0;l<cols;l++)
			{
				if(mineBtn[k][l].id==29)
				{
					winMineNumber++;
				}
				if(mineBtn[k][l].id<10 |mineBtn[k][l].id>=20)
				{
					yyy++;
				}
			}
		}
		if(winMineNumber==tempmineNumber & yyy==(rows*cols))
		{
			t.stop();
			bool=false;
			beginBtn.setIcon(new ImageIcon(MineFrame.class.getResource("image/ok.jpg")));
			finishtime=Integer.parseInt(lb2.getText().trim());

			CJFinishTime=Integer.parseInt(XYBlb[3].getText().trim());
			ZJFinishTime=Integer.parseInt(XYBlb[5].getText().trim());
			GJFinishTime=Integer.parseInt(XYBlb[7].getText().trim());
			if(JiBei==1)
			{
				if(finishtime<CJFinishTime)new XMwindow(MineFrame.this);
			}
			if(JiBei==2)
			{
				if(finishtime<ZJFinishTime)new XMwindow(MineFrame.this);
			}
			if(JiBei==3)
			{
				if(finishtime<GJFinishTime)new XMwindow(MineFrame.this);
			}
		}
	 }

	/**
	 * 点击按钮在无雷的情况下展开周围按钮的递归方法
	 */
	public void DiGui(int x,int y)
	{
		for(int i=-1;i<2;i++)
		{
			if(i+x>=rows)continue;
			if(i+x<0)continue;
			for(int j=-1;j<2;j++)
			{
				if(j+y>=cols)continue;
				if(j+y<0)continue;
				if(i==0 & j==0)continue;
				if(mineBtn[i+x][j+y].id>=10 && mineBtn[i+x][j+y].id<20)
				{
					mineBtn[i+x][j+y].id-=10;
					if(mineBtn[i+x][j+y].id==0)
					{
						mineBtn[i+x][j+y].setIcon(new ImageIcon(MineFrame.class.getResource("image/0.gif")));
						mineBtn[i+x][j+y].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/0.gif")));
						mineBtn[i+x][j+y].setEnabled(false);
						mineBtn[i+x][j+y].setBorder(new EmptyBorder(new Insets(1,1,1,1)));
						DiGui(i+x,j+y);
					}
					if(mineBtn[i+x][j+y].id>=1 && mineBtn[i+x][j+y].id<=8)
					{
						if(mineBtn[i+x][j+y].id==1){mineBtn[i+x][j+y].setIcon(new ImageIcon(MineFrame.class.getResource("image/1.gif")));mineBtn[i+x][j+y].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/1.gif")));}
						if(mineBtn[i+x][j+y].id==2){mineBtn[i+x][j+y].setIcon(new ImageIcon(MineFrame.class.getResource("image/2.gif")));mineBtn[i+x][j+y].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/2.gif")));}
						if(mineBtn[i+x][j+y].id==3){mineBtn[i+x][j+y].setIcon(new ImageIcon(MineFrame.class.getResource("image/3.gif")));mineBtn[i+x][j+y].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/3.gif")));}
						if(mineBtn[i+x][j+y].id==4){mineBtn[i+x][j+y].setIcon(new ImageIcon(MineFrame.class.getResource("image/4.gif")));mineBtn[i+x][j+y].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/4.gif")));}
						if(mineBtn[i+x][j+y].id==5){mineBtn[i+x][j+y].setIcon(new ImageIcon(MineFrame.class.getResource("image/5.gif")));mineBtn[i+x][j+y].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/5.gif")));}
						if(mineBtn[i+x][j+y].id==6){mineBtn[i+x][j+y].setIcon(new ImageIcon(MineFrame.class.getResource("image/6.gif")));mineBtn[i+x][j+y].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/6.gif")));}
						if(mineBtn[i+x][j+y].id==7){mineBtn[i+x][j+y].setIcon(new ImageIcon(MineFrame.class.getResource("image/7.gif")));mineBtn[i+x][j+y].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/7.gif")));}
						if(mineBtn[i+x][j+y].id==8){mineBtn[i+x][j+y].setIcon(new ImageIcon(MineFrame.class.getResource("image/8.gif")));mineBtn[i+x][j+y].setDisabledIcon(new ImageIcon(MineFrame.class.getResource("image/8.gif")));}
						mineBtn[i+x][j+y].setBorder(new EmptyBorder(new Insets(1,1,1,1)));
						mineBtn[i+x][j+y].setEnabled(false);
					}
					if(mineBtn[i+x][j+y].id==9)
					{
						mineBtn[i+x][j+y].id=19;
					}
				}
			}
		}
	}

	/***************
	 *自定义Dialog
	 *选择自定义菜单时弹出的窗口
	 */
	class ZDYDialog extends JDialog implements ActionListener
	{
		JButton b1,b2;
		JLabel jl1,jl2,jl3;
		JTextField jtf1,jtf2,jtf3;
		public ZDYDialog(){super();}
		public ZDYDialog(Frame owner, String title, boolean modal)
		{
			super(owner,title,modal);

			p=MineFrame.this.getLocation();
			setResizable(false);
			b1=new JButton("确定");
			b2=new JButton("取消");
			jl1=new JLabel("高度");
			jl2=new JLabel("宽度");
			jl3=new JLabel("雷数");
			jtf1=new JTextField(rows+"");
			jtf2=new JTextField(cols+"");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -