/**************************
 一早增加了昨晚的想法,data函数一定要实现产生的点数够多
 rand值与check判断处的值想想不一样,rand>check里的rand  而相等才是符合逻辑的
 下一版本就是增加2链表以添加斜线与增大间距实现加载图片
http://www.592xyx.com/gameplay/14193/index.shtml
关灯游戏3
没想到会于这游戏再结缘
会的东西,不应该只是说说而已……
纸上谈兵过后的具体实现
理论为心  技术为要
第一阶段产生地图的思考  
类似而已 还是有区别的
本程序练习图像化 地图是要加载图片 更方便操作
特别地可以用到;;;链表
连线本身是一个问题

以下为import可化简  本处可按逻辑实现基本功能运行
**************************/
  import java.awt.Frame;
  
import java.awt.Point;
import java.awt.p_w_picpath.BufferedImage;
import java.io.File;
import java.lang.reflect.Field;
import java.util.List;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Menu;
import java.awt.MenuBar;
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.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.Stack;
import java.util.Timer;
import java.util.TimerTask;
 
import javax.p_w_picpathio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JPanel;
import javax.swing.JTextArea;
 
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class Main extends JPanel {
	static Stack stack = new Stack(); // 创建堆栈对象 
    static int a = 1;
    static int rand = 1;
    static Point p = null;
    static Point p2 = null;
    static int    count=0;
    public static Frame frame = new Frame();
    static int s[][] = new  int [10][10];
    static int ss[][] = new  int [10][10];
    public static void data() {
    	java.util.Random random=new java.util.Random();// 定义随机类
    	  
    	  int sr=random.nextInt(120);
    	int o=2;int p=2;
    	//随机产生rand个连续的点在地图上
    	while(sr-->0)
    	{
    		int r=random.nextInt(20)%4;
    		if(00)
  	 // System.out.println("元素"+rand+"出栈");
  	//  System.out.println("元素"+stack.pop()+"出栈"); 
//    		  for(int i=0;i<10;i++)
//    			{for(int j=0;j<10;j++) System.out.print(" "+s[i][j]);
//    			System.out.println(" ");
//    			}
//    		  for(int i=0;i<10;i++)
//    			{for(int j=0;j<10;j++) System.out.print(" "+ss[i][j]);
//    			System.out.println(" ");    	
//    			}
    	System.out.println(" "+rand);
        Main f = new Main();
        frame.setTitle("【点灯游戏】");
        frame.add(f);        
        frame.setSize(500, 500);
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
         });
        //frame.
       
         
        f.Action();
        frame.addMouseListener(new MouseAdapter() {            
            public void mouseClicked(MouseEvent e) {
                int x = e.getX();
                int y = e.getY();
                count++;
            
                p = new Point(x, y);
               int i=(x-35)/20;
               int j=(y-55)/20;   
               //先判断在ss数组中的信息   是1才进行
               if(ss[j][i]==1)
               {
            	   s[j][i]=1-s[j][i];
            	   if(ss[j-1][i]==1)s[j-1][i]=1-s[j-1][i];            	   
            	   if(ss[j+1][i]==1)s[j+1][i]=1-s[j+1][i];
            	   if(ss[j][i-1]==1)s[j][i-1]=1-s[j][i-1];
            	   if(ss[j][i+1]==1)s[j][i+1]=1-s[j][i+1];
               }
               
               //再改变s中的状态
               if(check()==1)  p2 = new Point(330, 220);
               else            p2 = new Point(330, 2200);
                frame.repaint();
            }
        });
        frame.setVisible(true);
    }
 
    private Timer timer;
 
    private void Action() {
        // ListenerClick();
        timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                frame.repaint();
            }
        }, new Date(), 1000);
    }
 
    @Override
    public void paint(Graphics g) {
        g.drawLine(30,30,30,300);  // 左边
        g.drawLine(30,30,300,30);  // 上边    
        g.drawLine(300,30,300,300);// 右边
        g.drawLine(30,300,300,300);// 下边  
        g.drawString("【点灯游戏3】",333,33);
        g.drawString("点正方形区域,相连区域变化",333,50);
        int i=0,j=0;
         for(  i=0;i<10;i++)
 		 {
         	for(  j=0;j<10;j++) 
 			if(s[i][j]==1)g.drawString("+",40+j*20,40+i*20);
 		 }
//        for(  i=1;i<9;i++)
//		 {
//       	   for(  j=1;j<9;j++) 
//		 	 if(ss[i][j]==1&&ss[i][j+1]==1) g.drawLine(40+j*20,40+i*20,40+(j+1)*20,40+i*20);  //右
//       	    //  if(ss[i][j]==1&&ss[i][j-1]==1) g.drawLine(40+j*20,40+i*20,40+(j-1)*20,40+i*20);  //左
//          	   if(ss[i][j]==1&&ss[i-1][j]==1) g.drawLine(40+j*20,40+i*20,40+j*20,40+(i-1)*20);   //上
//         	//if(ss[i][j]==1&&ss[i+1][j]==1) g.drawLine(40+j*20,40+i*20,40+j*20,40+(i+1)*20);    //下         	          	
//		 }
        for(  i=1;i<9;i++)
		 {
      	   for(  j=1;j<9;j++) 
		 	 if(ss[i][j]==1&&ss[i][j+1]==1) g.drawLine(40+j*20,40+i*20,40+(j+1)*20,40+i*20);  //右
      	      if(ss[i][j]==1&&ss[i][j-1]==1) g.drawLine(40+j*20,40+i*20,40+(j-1)*20,40+i*20);  //左
         	       	          	
		 }
        for(  i=1;i<9;i++)
		 {
      	   for(  j=1;j<9;j++)  
         	   if(ss[i][j]==1&&ss[i-1][j]==1) g.drawLine(40+j*20,40+i*20,40+j*20,40+(i-1)*20);   //上
        	 if(ss[i][j]==1&&ss[i+1][j]==1) g.drawLine(40+j*20,40+i*20,40+j*20,40+(i+1)*20);    //下         	          	
		 }
        File file = new File("1.jpg");
       
          
        
        if (p != null) 
        {   if(30