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;
// }
}