www.pudn.com > scanmine2.0.rar > Controller.java


package cn.edu.hdc.controller; 
 
import java.awt.Button; 
import java.awt.MenuItem; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.util.LinkedList; 
import java.util.ListIterator; 
 
import javax.swing.JOptionPane; 
 
import cn.edu.hdc.ground.Ground; 
import cn.edu.hdc.test.Test; 
import cn.edu.hdc.util.Global; 
 
public class Controller extends MouseAdapter implements ActionListener { 
	Ground ground; 
	private Test jFrame; 
	public Controller(){} 
	@Override 
	public void mouseClicked(MouseEvent e) { 
		if(e.getButton() == MouseEvent.BUTTON1){ 
			Button jB = (Button)e.getSource(); 
			if(jB.getLabel().equals("")){ 
				if(jB.getName().equals("1")){ 
					jB.setVisible(false); 
					ground.showMine(); 
					JOptionPane.showMessageDialog(ground, "游戏结束!"); 
				} 
				else if(jB.getName().equals("0")){ 
						jB.setVisible(false); 
					} 
					else if(jB.getName().equals("3")) 
							reStart(); 
						else{ 
							String[] str = jB.getName().split("[|]"); 
							find(Integer.parseInt(str[0]),Integer.parseInt(str[1])); 
						} 
			}else 
				return; 
		} 
		else 
			if(e.getButton() == MouseEvent.BUTTON3){ 
				Button jB = (Button)e.getSource(); 
				if(jB.getLabel().equals("") && !jB.getLabel().equals("?")) 
					jB.setLabel("1"); 
				else{ 
					if(jB.getLabel().equals("1")) 
						jB.setLabel("?"); 
					else 
						jB.setLabel(""); 
				} 
			} 
	} 
	public Controller(Ground ground){ 
		this.ground = ground; 
	} 
	public void reStart(){ 
		ground.drawMe(); 
	} 
	private void find(int i,int j){ 
		if(!Ground.jB[i][j].getName().equals("0") && Ground.jB[i][j].isVisible())  
			Ground.jB[i][j].setVisible(false); 
		else {  
			Ground.jB[i][j].setVisible(false); 
			return;  
		}  
		if(i > 0 && j > 0 && Ground.jB[i-1][j-1].isVisible())  
			find(i - 1,j - 1);  
		if(i > 0 && Ground.jB[i-1][j].isVisible())  
			find(i - 1,j);  
		if(i > 0 && j < (Ground.jB[0].length-1) && Ground.jB[i-1][j+1].isVisible())  
			find(i - 1,j + 1);  
		if(j > 0 && Ground.jB[i][j-1].isVisible())  
			find(i,j - 1);  
		if(j < (Ground.jB[0].length-1) && Ground.jB[i][j+1].isVisible())  
			find(i,j + 1);  
		if(i< (Ground.jB.length-1) && j > 0 && Ground.jB[i+1][j-1].isVisible())  
			find(i + 1,j - 1);  
		if(i < (Ground.jB.length-1) && Ground.jB[i+1][j].isVisible())  
			find(i + 1,j);  
		if(i < Ground.jB.length-1 && j < Ground.jB[0].length-1 && Ground.jB[i+1][j+1].isVisible())  
			find(i + 1,j + 1);  
	} 
	public void actionPerformed(ActionEvent e) { 
		MenuItem menuItem = (MenuItem)e.getSource(); 
		System.out.print(menuItem.getLabel()); 
		if(menuItem.getLabel().equals("初级")){ 
			setLevel(0); 
		}else if(menuItem.getLabel().equals("中级")){ 
				setLevel(1); 
			}else if(menuItem.getLabel().equals("高级")){ 
					setLevel(2); 
				}else if(menuItem.getLabel().equals("退出")){ 
					System.out.print("游戏"); 
						System.exit(0);} 
					else if(menuItem.getLabel().equals("开局")) 
						reStart(); 
					else if(menuItem.getLabel().equals("关于")) 
						JOptionPane.showMessageDialog(ground, "扫雷游戏2.0"); 
					else if(menuItem.getActionCommand().equals("帮助")) 
						JOptionPane.showMessageDialog(ground, "扫雷游戏2.0"); 
	} 
	private void setLevel(int level){ 
		System.out.print("杉田地男国"); 
		switch(level){ 
		case 0: 
			Global.setMINE_W_NUM(10); 
			Global.setMINE_H_NUM(10); 
			Global.setMINE_NUMBER(10); 
			break; 
		case 1: 
			Global.setMINE_W_NUM(16); 
			Global.setMINE_H_NUM(16); 
			Global.setMINE_NUMBER(40); 
			break; 
		case 2: 
			Global.setMINE_W_NUM(30); 
			Global.setMINE_H_NUM(16); 
			Global.setMINE_NUMBER(99); 
		} 
		ground.setSize(Global.GAME_WIDTH + 16, Global.GAME_HIGTH + Global.PANEL_HIGTH + 6); 
		reStart(); 
		//jFrame.disable(); 
//		jFrame = new Test(); 
//		ground = new Ground(); 
//		 
//		jFrame.jGroundp.add(ground); 
//		jFrame.setSize((int)ground.getSize().getWidth()+6,(int)ground.getSize().getHeight()+50); 
//		jFrame.setVisible(true); 
//		jFrame.setSize((int)ground.getSize().getWidth()+6,(int)ground.getSize().getHeight()+50); 
//		jFrame.repaint(); 
	} 
//	public void setJFrame(JFrame frame) { 
//		jFrame = frame; 
//	} 
}