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

📄 map.java

📁 与QQ游戏中的“连连看”的游戏规则基本一样
💻 JAVA
字号:
package lianliankan;

import java.util.Random;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;

public class Map {
	 public  int iconnum=120;        //图片个数
	 public  int time;
     public Random random = new Random();
     public int[] iconblack = new int[170];     //图片显示数组
     public int[] buttonblack = new int[170];   //背景数组
     public int corner=0;
     public int cornerx=0;
     public int cornery=0;
     public int corner1x=0;
     public int corner1y=0;
     public int corner2x=0;
     public int corner2y=0;
     Line line;
     public Map(){
    	 for(int i=0;i<170;i++){
    		 iconblack[i]=-1;
    		 buttonblack[i]=0;
    	 }
     }
     public void chushihua(){
    	 for(int i=0;i<170;i++){
    		 iconblack[i]=-1;
    		 buttonblack[i]=0;
    	 }
    	 for(int j=0;j<MainFrame.clomu;j++){
    		 for(int i=0;i<MainFrame.row;i++)
    			 MainFrame.black[i][j]=0;
    	 }
     }
     public  void buttonblack(int iconnum){
     int n=1;int i=1;
       buttonblack[0]=random.nextInt(170);
       loop:while(i<iconnum){
       buttonblack[i]=random.nextInt(170);
       for(int j=i-1;j>=0;j--){
    	   if(buttonblack[i]==buttonblack[j])
    		continue loop;
    	    else n=0;
       }
       if(n==0)i++;
       }
     }
     public void iconblack(int iconnum){
    	 for(int i=0;i<iconnum/2;i++){
    		 iconblack[i]=random.nextInt(39);
    	 }
    	 for(int i=0;i<iconnum/2;i++){
    		 iconblack[i+(iconnum/2)]=iconblack[i];
    	 }
     }
     public int diretion(int upiconbuttonx,int iconbuttonx,int upiconbuttony,int iconbuttony){
    	 if(upiconbuttonx==iconbuttonx)
    		 return(0);
    	 else if(upiconbuttony==iconbuttony)
    		 return(1);
    	 else return(2);
     }
     public boolean det(int direction,int upiconbuttonx,int iconbuttonx,int upiconbuttony,int iconbuttony,boolean test){
    	 boolean candet=false;
    	 switch(direction){
    	 case 0:candet=det4(iconbuttonx,iconbuttony,upiconbuttony);
    	 if(candet&&!test){
    		 line = new Line();
    		 line.start0x(iconbuttonx,upiconbuttony,iconbuttony,line);
    	 }
    	 if(!candet){
    		 candet=det0(upiconbuttonx,iconbuttonx,iconbuttony,upiconbuttony);
    		 if(candet&&!test){
    		   line = new Line();
       		   line.start2(upiconbuttonx,iconbuttonx,upiconbuttony,iconbuttony,corner1x,corner1y,corner2x,corner2y,line);
    		 }
    	 }
    	 break;  
    	 case 1:candet=det3(iconbuttony,iconbuttonx,upiconbuttonx);
    	 if(candet&&!test){
    		 line = new Line();
    		 line.start0y(iconbuttony,upiconbuttonx,iconbuttonx,line);
    	 }
    	 if(!candet){
    		 candet=det1(upiconbuttony,iconbuttony,iconbuttonx,upiconbuttonx);
    		 if(candet&&!test){
    		   line = new Line();
       		   line.start2(upiconbuttonx,iconbuttonx,upiconbuttony,iconbuttony,corner1x,corner1y,corner2x,corner2y,line);
    		 }
    	 }
    	 break;
    	 case 2:
    		 System.out.println("tiaoyong2");
    		 candet=det2(upiconbuttonx,iconbuttonx,upiconbuttony,iconbuttony,test);
    	 break;
    	 }
    	 return(candet);
     }
     public boolean det0(int upiconbuttonx,int iconbuttonx,int iconbuttony,int upiconbuttony){
    	 boolean candet=false;int i=0;
    	 if(!candet){
    		 for(i=1;i<=17;i++){
    			 corner1x=i;corner1y=iconbuttony;
    			 corner2x=i;corner2y=upiconbuttony;
    			 if(MainFrame.black[corner1x-1][corner1y-1]==1||MainFrame.black[corner2x-1][corner2y-1]==1){
    			 }else if(det4(corner1x,corner1y,corner2y)&&
      		   det3(corner1y,corner1x,iconbuttonx)&&
    		   det3(corner2y,corner2x,upiconbuttonx)){
    		   System.out.println("corner1x:"+corner1x+"corner1y:"+corner1y+"corner2x:"+corner2x+"corner2y:"+corner2y);
    				 candet=true;
    				 corner=2;
    				 break;
    			 }
    		 }
    	 }
    	 
    	 return(candet);
     }
     public boolean det1(int upiconbuttony,int iconbuttony,int iconbuttonx,int upiconbuttonx){
    	 int i=0;boolean candet=false;
    	 if(!candet){
    		 for(i=1;i<=10;i++){
    		   corner1x=iconbuttonx;corner1y=i;
          	   corner2x=upiconbuttonx;corner2y=i;
          	   if(MainFrame.black[corner1x-1][corner1y-1]==1||MainFrame.black[corner2x-1][corner2y-1]==1){
          	   }else if(det3(corner1y,corner1x,corner2x)&&
          	               det4(corner1x,corner1y,iconbuttony)&&
          	                   det4(corner2x,corner2y,upiconbuttony)){
          		    candet=true;
          		    corner=2;
          		  System.out.println("corner1x:"+corner1x+"corner1y:"+corner1y+"corner2x:"+corner2x+"corner2y:"+corner2y);
          		  break;
          	   }
    		 }
    		 }
    	 return(candet);
     }
     public boolean det3(int iconbuttony,int iconbuttonx,int upiconbuttonx){  //heng
    	 int i=0,j=0;boolean candet=true;
    	 if(iconbuttonx>upiconbuttonx){
    		 i=upiconbuttonx-1;j=iconbuttonx-1;
    	 }else {
    		 i=iconbuttonx-1;j=upiconbuttonx-1;
    	 }
    	 if(i==(j-1)){
    		 candet=true;
    	 }
    	 else{
    	 for(i=i+1;i<j;i++){
    		 if(MainFrame.black[i][iconbuttony-1]==1){
    			 candet=false;break;
    		 }
    	 }
    	 }
    	 return(candet);
     }
     public boolean det4(int iconbuttonx,int iconbuttony,int upiconbuttony){  //shu
    	 int i=0,j=0;boolean candet=true;
    	 if(iconbuttony>upiconbuttony){
    		 i=upiconbuttony-1;j=iconbuttony-1;
    	 }else {
    		 i=iconbuttony-1;j=upiconbuttony-1;
    	 }
    	 if(i==(j-1)){
    		 candet=true;
    	 }
    	 else{
    	 for(i=i+1;i<j;i++){
    		 if(MainFrame.black[iconbuttonx-1][i]==1){
    			 candet=false;break;
    		 }
    	 }
    	 }
    	 return(candet);
     }
 
     public boolean det2(int upiconbuttonx,int iconbuttonx,int upiconbuttony,int iconbuttony,boolean test){
    	 boolean heng=false;
    	 boolean shu=false;
    	 boolean shu1=false;
    	 cornerx=upiconbuttonx;cornery=iconbuttony;
    	 System.out.println("cornerx:"+cornerx+"cornery:"+cornery);
    	 if(MainFrame.black[cornerx-1][cornery-1]!=1){
    	 heng=det3(cornery,cornerx,iconbuttonx);
    	 shu=det4(cornerx,upiconbuttony,cornery);   
    	 System.out.println("10");
         if(heng&&shu){
        	 corner=1;
        	 if(!test){
        	   line = new Line();
        	   line.start1(upiconbuttonx,iconbuttonx,upiconbuttony,iconbuttony,cornerx,cornery,line);
        	 }
        	 System.out.println("11");
             System.out.println("corner:"+corner);
             return true;
         }
    	 }  cornerx=iconbuttonx;cornery=upiconbuttony;
    	 System.out.println("cornerx:"+cornerx+"cornery:"+cornery);
         if(MainFrame.black[cornerx-1][cornery-1]!=1){
        	 heng=det3(cornery,cornerx,upiconbuttonx);
        	 shu=det4(cornerx,cornery,iconbuttony);   
        	 System.out.println("20");       
          if(heng&&shu){
        	 corner=1;
        	 if(!test){
        	     line = new Line();
        	     line.start1(upiconbuttonx,iconbuttonx,upiconbuttony,iconbuttony,cornerx,cornery,line);
        	   }
        	   System.out.println("21");
        	   System.out.println("corner:"+corner);
        	   return true;
             }
        }	 
               for(int i=1;i<=10;i++){
            	   heng=true;shu=true;shu1=true;
            	   corner1x=iconbuttonx;corner1y=i;
            	   corner2x=upiconbuttonx;corner2y=i;
            	   System.out.println("coner1:"+MainFrame.black[corner1x-1][corner1y-1]);
        		   System.out.println("coner2:"+MainFrame.black[corner2x-1][corner2y-1]);
            	   if(MainFrame.black[corner1x-1][corner1y-1]==1||MainFrame.black[corner2x-1][corner2y-1]==1){
            		   heng=false;shu=false;
            		   System.out.println("xiaoqu");
            		   System.out.println("coner1:"+MainFrame.black[corner1x-1][corner1y-1]);
            		   System.out.println("coner2:"+MainFrame.black[corner2x-1][corner2y-1]);
            	   }else{
            	   heng=det3(corner1y,corner1x,corner2x);
            	   shu=det4(corner1x,corner1y,iconbuttony);
            	   shu1=det4(corner2x,corner2y,upiconbuttony);
            	   System.out.println("30");
            	   }
            	   if(heng&&shu&&shu1){
            		   corner=2;
            		   if(!test){
                    	   line = new Line();
                   		   line.start2(upiconbuttonx,iconbuttonx,upiconbuttony,iconbuttony,corner1x,corner1y,corner2x,corner2y,line);
                    	   }
            		   System.out.println("31");
            		   System.out.println("corner:"+corner);
            		   System.out.println("corner1x:"+corner1x+"corner1y:"+corner1y+"corner2x:"+corner2x+"corner2y:"+corner2y);
            		   return true;
            	   }
               }
                   for(int i=1;i<=17;i++){
            		   heng=true;shu=true;shu1=true;
            		   corner1x=i;corner1y=iconbuttony;
            		   corner2x=i;corner2y=upiconbuttony;
            		   System.out.println("coner1:"+MainFrame.black[corner1x-1][corner1y-1]);
            		   System.out.println("coner2:"+MainFrame.black[corner2x-1][corner2y-1]);
            		   if(MainFrame.black[corner1x-1][corner1y-1]==1||MainFrame.black[corner2x-1][corner2y-1]==1){
                		   heng=false;shu=false;
                		   System.out.println("xiaoqu");
                		   System.out.println("coner1:"+MainFrame.black[corner1x-1][corner1y-1]);
                		   System.out.println("coner2:"+MainFrame.black[corner2x-1][corner2y-1]);
            		   }else{
            		   heng=det4(corner1x,corner1y,corner2y);
            		   shu=det3(corner1y,corner1x,iconbuttonx);
            		   shu1=det3(corner2y,corner2x,upiconbuttonx);
            		   System.out.println("40");
            		   }
            		   if(heng&&shu&&shu1)
            		   {
            			   corner=2;
            			   if(!test){
                        	   line = new Line();
                       		   line.start2(upiconbuttonx,iconbuttonx,upiconbuttony,iconbuttony,corner1x,corner1y,corner2x,corner2y,line);
                        	   }
                		   System.out.println("corner:"+corner);
            			   System.out.println("41");            			 
            			   return true;
            		   }
            	   }                       
    	 return false;
     }
}
class Line extends Thread{
	int m_iconbuttonx;
	int m_upiconbuttonx;
	int m_iconbuttony;
	int m_upiconbuttony;
	int m_corner;
	int m_cornerx;
	int m_cornery;
	int m_corner1x;
	int m_corner1y;
	int m_corner2x;
	int m_corner2y;
	int j=0;
	int line[] = new int[44];
	ImageIcon icondong = new ImageIcon("images/dots.gif");
	public void start0x(int iconbuttonx,int upiconbuttony,int iconbuttony,Line th){
		m_corner=1;
		m_upiconbuttony=upiconbuttony;
		m_iconbuttony=iconbuttony;
		m_iconbuttonx=iconbuttonx;
		System.out.println("m_upiconbuttony:"+m_upiconbuttony);
		th.start();
	}
	public void start0y(int iconbuttony,int upiconbuttonx,int iconbuttonx,Line th){
		m_corner=2;
		m_iconbuttony=iconbuttony;
		m_upiconbuttonx=upiconbuttonx;
		m_iconbuttonx=iconbuttonx;
		System.out.println("m_upiconbuttonx:"+m_upiconbuttonx);
		th.start();
	}
	public void start1(int upiconbuttonx,int iconbuttonx,int upiconbuttony,int iconbuttony,
			int cornerx,int cornery,Line th){
		m_corner=3;
		m_iconbuttony=iconbuttony;
		m_upiconbuttonx=upiconbuttonx;
		m_iconbuttonx=iconbuttonx;
		m_upiconbuttony=upiconbuttony;
		m_cornerx=cornerx;
		m_cornery=cornery;
		th.start();
	}
	public void start2(int upiconbuttonx,int iconbuttonx,int upiconbuttony,int iconbuttony,
			int corner1x,int corner1y,int corner2x,int corner2y,Line th){
		m_corner=4;
		m_iconbuttony=iconbuttony;
		m_upiconbuttonx=upiconbuttonx;
		m_iconbuttonx=iconbuttonx;
		m_upiconbuttony=upiconbuttony;
		m_corner1x=corner1x;
		m_corner1y=corner1y;
		m_corner2x=corner2x;
		m_corner2y=corner2y;
		th.start();
	}
	public void run(){
		switch(m_corner){
		case 1:shu(m_upiconbuttony,m_iconbuttony,m_iconbuttonx);donghua();chushihua();break;
		case 2:heng(m_upiconbuttonx,m_iconbuttonx,m_iconbuttony);donghua();chushihua();break;
		case 3:if(m_cornerx==m_upiconbuttonx){
			    shu(m_upiconbuttony,m_cornery,m_cornerx);j=j-1;
			    heng(m_cornerx,m_iconbuttonx,m_cornery);
			    donghua();chushihua();
		}else{
			    heng(m_upiconbuttonx,m_cornerx,m_cornery);j=j-1;
			    shu(m_cornery,m_iconbuttony,m_cornerx);
			    donghua();chushihua();
			}break;
		case 4:
			if(m_upiconbuttonx==m_iconbuttonx){
				heng(m_upiconbuttonx,m_corner2x,m_upiconbuttony);j=j-1;			
				shu(m_corner2y,m_corner1y,m_corner1x);j=j-1;
				heng(m_corner1x,m_iconbuttonx,m_iconbuttony);
				donghua();chushihua();
		}else{ if(m_upiconbuttony!=m_iconbuttony){
			   if(m_corner1x==m_corner2x){
				   heng(m_upiconbuttonx,m_corner2x,m_corner2y);j--;
				   shu(m_corner2y,m_corner1y,m_corner2x);j--;
				   heng(m_corner1x,m_iconbuttonx,m_iconbuttony);
				   donghua();chushihua();
			   }else{
				   shu(m_upiconbuttony,m_corner2y,m_corner2x);j--;
				   heng(m_corner2x,m_corner1x,m_corner1y);j--;
				   shu(m_corner1y,m_iconbuttony,m_corner1x);
				   donghua();chushihua();
			   }
		}else{
			   shu(m_upiconbuttony,m_corner2y,m_corner2x);j=j-1;
		       heng(m_corner2x,m_corner1x,m_corner2y);j=j-1;
		       shu(m_corner1y,m_iconbuttony,m_iconbuttonx);
		       donghua();chushihua();
		}
		}
		break;
		default:break;
		}
	}
	public void donghua(){
		for(int i=0;i<j;i++){
			MainFrame.iconbutton[line[i]].setVisible(true);
			MainFrame.iconbutton[line[i]].setOpaque(false);
			MainFrame.iconbutton[line[i]].setIcon(icondong);
			MainFrame.iconbutton[line[i]].setBorder(BorderFactory.createRaisedBevelBorder());
			try {
				sleep(50);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		for(int i=0;i<j;i++){
			MainFrame.iconbutton[line[i]].setVisible(false);
			try {
				sleep(50);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	public void heng(int m_upiconbuttonx,int m_iconbuttonx,int m_iconbuttony){
		if(m_upiconbuttonx>m_iconbuttonx){
		     for(int i=m_upiconbuttonx;i>=m_iconbuttonx;i--){
		    	 line[j]=i-1+(m_iconbuttony-1)*17;
		    	 j++;
		     }
		     }else{
		    for(int i=m_upiconbuttonx;i<=m_iconbuttonx;i++){
		    	line[j]=i-1+(m_iconbuttony-1)*17;
		    	j++;
		    }
		     }
	}
	public void shu(int m_upiconbuttony,int m_iconbuttony,int m_iconbuttonx){
		if(m_upiconbuttony>m_iconbuttony){
			for(int i=m_upiconbuttony;i>=m_iconbuttony;i--){
				line[j]=m_iconbuttonx-1+(i-1)*17;
				j++;
			}
		}else{
			for(int i=m_upiconbuttony;i<=m_iconbuttony;i++){
				line[j]=m_iconbuttonx-1+(i-1)*17;
				j++;
		}
	}
}
	public void chushihua(){
		for(int i=0;i<j;i++){
			//System.out.println("line["+i+"]:"+line[i]);
			line[i]=0;
		}
		j=0;
	}
}

⌨️ 快捷键说明

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