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

📄 gametest.java

📁 与WINDOWS自带相同的扫雷游戏,用SWING编写的.请支持
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			}
			if (this.West()!=null){
				if (((MyButton)(this.West())).isFlag()){
					count++;
				}
			}
			if (this.South()!=null){
				if (((MyButton)(this.South())).isFlag()){
					count++;
				}
			}
			if (this.SouthEast()!=null){
				if (((MyButton)(this.SouthEast())).isFlag()){
					count++;
				}
			}
			if (this.SouthWest()!=null){
				if (((MyButton)(this.SouthWest())).isFlag()){
					count++;
				}
			}
			if (count==this.roundMineCount&&count!=0){
				if (this.NorthEast()!=null){
					((MyButton)(this.NorthEast())).showMine();
					}
			
				if (this.NorthWest()!=null){
					((MyButton)(this.NorthWest())).showMine();
				}
				if (this.North()!=null){
					((MyButton)(this.North())).showMine();
				}
				if (this.East()!=null){
					((MyButton)(this.East())).showMine();
				}
				if (this.West()!=null){
					((MyButton)(this.West())).showMine();
				}
				if (this.South()!=null){
					((MyButton)(this.South())).showMine();
				}
				if (this.SouthEast()!=null){
					((MyButton)(this.SouthEast())).showMine();
				}
				if (this.SouthWest()!=null){
					((MyButton)(this.SouthWest())).showMine();
				}
			}	
			else
			{	
				roundUp();	
			}
		}
		private void setOpen(boolean stutas){
			isOpen=stutas;
		}
		private void setAsk(boolean stutas){
			isAsk=stutas;
		}
		private boolean isAsk(){
			return isAsk;
		}		
		private void setFlag(boolean stutas){
			isFlag=stutas;
		}
		private boolean isFlag(){
			return isFlag;
		}
		//方位方法
		//--西北

		private boolean isOpen(){
			return isOpen;
		}
		private Object NorthWest(){
			if (((locationX-1)>=0)&&((locationY-1)>=0)){
				return btn[locationX-1][locationY-1];
			}
			else
				return null;
		}
		//--北
		private Object North(){
			if ((locationY-1)>=0){
				return btn[locationX][locationY-1];
			}
			else
				return null;
		}
		//--东北
		private Object NorthEast(){
			if (((locationX+1)<panelX)&&((locationY-1)>=0)){
				return btn[locationX+1][locationY-1];
			}
			else
				return null;
		}
		//--东
		private Object East(){
			if ((locationX-1)>=0){
				return btn[locationX-1][locationY];
			}
			else
				return null;
		}
		//--西
		private Object West(){
			if ((locationX+1)<panelX){
				return btn[locationX+1][locationY];
			}
			else
				return null;
		}
		//--西南
		private Object SouthWest(){
			if (((locationX-1)>=0)&&((locationY+1)<panelY)){
				return btn[locationX-1][locationY+1];
			}
			else
				return null;
		}
		//--南
		private Object South(){
			if ((locationY+1)<panelY){
				return btn[locationX][locationY+1];
			}
			else
				return null;
		}
		//--东南
		private Object SouthEast(){
			if (((locationX+1)<panelX)&&((locationY+1)<panelY)){
				return btn[locationX+1][locationY+1];
			}
			else
				return null;
		}
		//展示雷
		private void showMine(){
			if (this.isMine&&(!this.isFlag)){
				gameOver(this.locationX,this.locationY);
			}
			else{
				showCount();
			}
		}
		//刷新雷
		private void refresh(){
			this.isMine=false;
			roundMineCount=0;
		}
		private void showCount(){
			if (!isOpen&&!isFlag){
				this.isOpen=true;
				this.setBorder(BorderFactory.createEmptyBorder());
				switch(roundMineCount){
					case 0:
					{
						URL url = GameTest.class.getResource("images/0.gif");
						this.setIcon(new ImageIcon(url));
						if (this.NorthWest()!=null){
							((MyButton)(this.NorthWest())).showCount();
						}					
						if (this.North()!=null){
							((MyButton)(this.North())).showCount();
						}
						if (this.NorthEast()!=null){
							((MyButton)(this.NorthEast())).showCount();
						}
	
						if (this.West()!=null){
							((MyButton)(this.West())).showCount();
						}
			
						if (this.East()!=null){
							((MyButton)(this.East())).showCount();
						}
						
						if (this.SouthWest()!=null){
							((MyButton)(this.SouthWest())).showCount();
						}
	
						if (this.South()!=null){
							((MyButton)(this.South())).showCount();
						}
	
	
						if (this.SouthEast()!=null){
							((MyButton)(this.SouthEast())).showCount();
						}
		
						break;
					}
					case 1:
					{
						URL url = GameTest.class.getResource("images/1.gif");
						this.setIcon(new ImageIcon(url));
						break;
					}
					case 2:
					{
						URL url = GameTest.class.getResource("images/2.gif");
						this.setIcon(new ImageIcon(url));
						break;
					}
					case 3:
					{
						URL url = GameTest.class.getResource("images/3.gif");
						this.setIcon(new ImageIcon(url));
						break;
					}
					case 4:
					{
						URL url = GameTest.class.getResource("images/4.gif");
						this.setIcon(new ImageIcon(url));
						break;
					}
					case 5:
					{
						URL url = GameTest.class.getResource("images/5.gif");
						this.setIcon(new ImageIcon(url));
						break;
					}
					case 6:
					{
						URL url = GameTest.class.getResource("images/6.gif");
						this.setIcon(new ImageIcon(url));
						break;
					}
					case 7:
					{
						URL url = GameTest.class.getResource("images/7.gif");
						this.setIcon(new ImageIcon(url));
						break;
					}
					case 8:
					{
						URL url = GameTest.class.getResource("images/8.gif");
						this.setIcon(new ImageIcon(url));
						break;
					}
					default:
						break;
					
				}
			}
		}
		private void upMine(){
			roundMineCount++;
		}
		private boolean isMine(){
			return isMine;
		}
		private void setMine(boolean mineStatus){
			isMine=mineStatus;
		}
		private void setLocate(int x,int y){
			locationX=x;
			locationY=y;
		}
		private  Point getLocate(){
			Point locate=new Point(locationX,locationY);
			return locate;
		}
		//构造函数
		public MyButton(){
			//设置雷的边框和大小
			//this.setBackground(Color.LIGHT_GRAY);
			URL url = GameTest.class.getResource("images/blank.gif");
			this.setIcon(new ImageIcon(url));
			//this.setMyPressedIcon(new ImageIcon("images/0.gif"));
			this.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
			this.setPreferredSize(new Dimension(16,16));
			this.setFocusable(false);
			isMine=false;
			isFlag=false;
			isAsk=false;
			roundMineCount=0;
		}
		}
	//方法:生成菜单
	private void createMenu(){
		//设置菜单
		JMenuBar menuTitle=new JMenuBar();
		JMenu gameSetMenu=new JMenu("游戏(G)");
		JMenu helpMenu=new JMenu("帮助(H)");
		//设置菜单栏快捷键
		gameSetMenu.setMnemonic('G');//Alt+G
		helpMenu.setMnemonic('H');//Alt+H
		//设置字体
		gameSetMenu.setFont(new Font("宋体",Font.PLAIN,12));
		helpMenu.setFont(new Font("宋体",Font.PLAIN,12));
		//自定义子菜单项类
		class MyJMenuItem extends JMenuItem{
			public MyJMenuItem(){
				this.setFont(new Font("宋体",Font.PLAIN,12));
			}
			public MyJMenuItem(String text, int mnemonic){
				super(text,mnemonic);
				this.setFont(new Font("宋体",Font.PLAIN,12));
			}
		}
		//自定义单选按钮菜单类
		class MyRadioButtonMenuItem extends JRadioButtonMenuItem{
			public MyRadioButtonMenuItem(String text){
				super(text);
				this.setFont(new Font("宋体",Font.PLAIN,12));
				
			}
			public MyRadioButtonMenuItem(String text, boolean selected){
				super(text,selected);
				this.setFont(new Font("宋体",Font.PLAIN,12));
			}
		}
		//自定义复选按钮菜单类
		class MyCheckBoxMenuItem extends JCheckBoxMenuItem{
			public MyCheckBoxMenuItem(String text){
				super(text);
				this.setFont(new Font("宋体",Font.PLAIN,12));
				
			}
			public MyCheckBoxMenuItem(String text, boolean selected){
				super(text,selected);
				this.setFont(new Font("宋体",Font.PLAIN,12));
			}
		}
		// 菜单项及快捷键
		JMenuItem startItem=new MyJMenuItem("开局(N)",'N');
		JMenuItem exitItem=new MyJMenuItem("退出(X)",'X');
		JMenuItem heroListItem=new MyJMenuItem("扫雷英雄版(T)",'T');
		JMenuItem indexItem=new MyJMenuItem("目录(C)",'C');
		JMenuItem serHelpItem=new MyJMenuItem("查找帮助主题(S)",'S');
		JMenuItem helpItem=new MyJMenuItem("使用帮助(H)",'H');
		JMenuItem aboutItem=new MyJMenuItem("关于扫雷(A)",'A');
		//注册事件
		startItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
					//openGame();
					setLevel(panelX,panelY,mine_AllCount);
				}	
		});
		//单选菜单项
		ButtonGroup levelSetGroup=new ButtonGroup();
		JRadioButtonMenuItem easyItem=new MyRadioButtonMenuItem("初级(B)",true);
		JRadioButtonMenuItem normalItem=new MyRadioButtonMenuItem("中级(I)");
		JRadioButtonMenuItem hardItem=new MyRadioButtonMenuItem("高级(E)");
		JRadioButtonMenuItem definedItem=new MyRadioButtonMenuItem("自定义(C)...");
		//设置单选菜单项快捷键
		easyItem.setMnemonic('B');
		normalItem.setMnemonic('I');
		hardItem.setMnemonic('E');
		definedItem.setMnemonic('C');
		levelSetGroup.add(easyItem);
		levelSetGroup.add(normalItem);
		levelSetGroup.add(hardItem);
		levelSetGroup.add(definedItem);
		exitItem.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					System.exit(0);
				}	
		});
		//注册事件 根据点选的难度级别:设置雷
		easyItem.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					setLevel(9,9,10);
				}
			} );
		normalItem.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					setLevel(16,16,40);
			}
			} );
		hardItem.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					setLevel(30,16,99);
				}
			} );
		definedItem.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					int x,y;
					x=getLocation().x;
					y=getLocation().y;

⌨️ 快捷键说明

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