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

📄 id.java

📁 一个java跳棋程序.rar 术语java servlet代码
💻 JAVA
字号:
import java.awt.*;
import java.util.*;
import java.math.*;//import table.Table;
public class ID{
    private int x;
    private int y;
	public ID(int x_in,int y_in){
		x=x_in;
		y=y_in;
	}
	ID(){}
	public int getX(){
		return x;
	}
	public int getY(){
		return y;
	}
	public String toString(){
		return new String("id.y="+this.getY()+" id.x="+this.getX());
	}
	public static ID changeToID(Dimension position){
		int x=0,y=0;
		Dimension originPos=Table.getOriginPosition();
		int chessR=Chess.getChessR();
		int distX=Table.getDistanceX();
		int distY=Table.getDistanceY();
		int n=(position.height-originPos.height)/distY;
		if(position.height-(originPos.height+n*distY)>chessR)
		y = n + 1;
		else if(originPos.height+n*distY-position.height<chessR)
		y = n;
		
		int makepos;
		if(position.width<originPos.width)
		makepos = 2 * originPos.width - position.width;
		else makepos=position.width;
		
		if(y%2==0)
		{
			if(makepos-originPos.width<=chessR)
		    n=0;
		    else{
		    	n=(makepos-originPos.width)/distX;
		    	if((makepos-(originPos.width+n*distX))>chessR)
		    	n = n + 1;
		    	else if((originPos.width+n*distX-makepos)<chessR)
		    	n = n;
		    }
		} 
		if(y%2!=0)
		{
		   n=((makepos-originPos.width)/distX) + 1;		   
		}
		
		if(position.width<originPos.width)
		   x = 6 - n;
		else x = 6 + n;
		return new ID(x,y);
		
	}
	public static Dimension changeToPos(ID id){
		int x=0,y=0;
		int idx=id.getX(),idy=id.getY();
  //	System.out.println("idx="+idx+" idy="+idy);
		Dimension originPos=Table.getOriginPosition();
		int distX=Table.getDistanceX();
		int distY=Table.getDistanceY();
		y = originPos.height + idy * distY;
		if(idy%2==0){
			x = originPos.width + (idx - 6) * distX;
		}
		if(idy%2!=0){
			if(idx>=6){
			    x = originPos.width + (int)((idx - 6.5) * distX);
			    }
		    else{
		    	idx=12-idx;		
		        x = originPos.width - (int)((idx - 6.5) * distX); 
		    }
		}
		return new Dimension(x,y);
	}
	
	
	
	
	
	public static boolean search(ID idLeave,ID idGo,Table table[][]){
	ID id=new ID();
	ID idBy=new ID();
	id=idLeave;
	
	ID pass[]=new ID[20];
    pass[0]=idLeave;
	int passNum=1;
	boolean isPass=false;
	
	ID idArray[][]=new ID[100][6];
	ID idByArray[][]=new ID[100][6];
	idArray[0][0]=id;
	
	int i=1,j=0,flag=1,n=1;
	Stack stack=new Stack();
    stack.push(new Dimension(0,0));   
//	Stack sta=new Stack();
/*	if(idGo.getY()-idLeave.getY()==1||idGo.getY()-idLeave.getY()==-1){
	    stack.push(new Dimension(0,0));
	    idArray[0][0]=idGo;
	}*/
 /*   if(idGo.getY()-idLeave.getY()==0&&idGo.getX()-idLeave.getX()==2||
       idGo.getX()-idLeave.getX()==-2||idGo.getX()-idLeave.getX()==1
       idGo.getX()-idLeave.getX()==-1)*/
//	sta.push(idGo);

search:	while((id.getX()!=idGo.getX()||id.getY()!=idGo.getY())||(pass[passNum-1].getX()!=
	           idGo.getX()||pass[passNum-1].getY()!=idGo.getY())){
            if(flag==1){  
      		   		int x=id.getX();
		            int y=id.getY();
			    if(x==6&&y%2==0){
			        idArray[n][0]=new ID(x+1,y+2);idByArray[n][0]=new ID(x+1,y+1);
			        idArray[n][1]=new ID(x-1,y+2);idByArray[n][1]=new ID(x-1,y+1);
			        idArray[n][2]=new ID(x+1,y-2);idByArray[n][2]=new ID(x+1,y-1);
			        idArray[n][3]=new ID(x-1,y-2);idByArray[n][3]=new ID(x-1,y-1);
			        idArray[n][4]=new ID(x-2,y);  idByArray[n][4]=new ID(x-1,y);
			        idArray[n][5]=new ID(x+2,y);  idByArray[n][5]=new ID(x+1,y);			    	
			    }
		        else if(x<6&&y%2==0){
			        idArray[n][0]=new ID(x+1,y+2);idByArray[n][0]=new ID(x,y+1);
			        idArray[n][1]=new ID(x-1,y+2);idByArray[n][1]=new ID(x-1,y+1);
			        idArray[n][2]=new ID(x+1,y-2);idByArray[n][2]=new ID(x,y-1);
			        idArray[n][3]=new ID(x-1,y-2);idByArray[n][3]=new ID(x-1,y-1);
			        idArray[n][4]=new ID(x-2,y);  idByArray[n][4]=new ID(x-1,y);
			        idArray[n][5]=new ID(x+2,y);  idByArray[n][5]=new ID(x+1,y);
			    }
			    else if(x>6&&y%2==0){
			        idArray[n][0]=new ID(x+1,y+2);idByArray[n][0]=new ID(x+1,y+1);
			        idArray[n][1]=new ID(x-1,y+2);idByArray[n][1]=new ID(x,y+1);
			        idArray[n][2]=new ID(x+1,y-2);idByArray[n][2]=new ID(x+1,y-1);
			        idArray[n][3]=new ID(x-1,y-2);idByArray[n][3]=new ID(x,y-1);
			        idArray[n][4]=new ID(x-2,y);  idByArray[n][4]=new ID(x-1,y);
			        idArray[n][5]=new ID(x+2,y);  idByArray[n][5]=new ID(x+1,y);
			    }
			    else if(y%2!=0){
			    	if(x==2||x==3||x==0||x==1){
			        idArray[n][0]=new ID(x+1,y+2);idByArray[n][0]=new ID(x+1,y+1);
			        idArray[n][1]=new ID(x-1,y+2);idByArray[n][1]=new ID(x,y+1);
			        idArray[n][2]=new ID(x+1,y-2);idByArray[n][2]=new ID(x+1,y-1);
			        idArray[n][3]=new ID(x-1,y-2);idByArray[n][3]=new ID(x,y-1);
			        idArray[n][4]=new ID(x-2,y);  idByArray[n][4]=new ID(x-1,y);
			        idArray[n][5]=new ID(x+2,y);  idByArray[n][5]=new ID(x+1,y);
			    	}
			    	if(x==4){
			        idArray[n][0]=new ID(x+1,y+2);idByArray[n][0]=new ID(x+1,y+1);
			        idArray[n][1]=new ID(x-1,y+2);idByArray[n][1]=new ID(x,y+1);
			        idArray[n][2]=new ID(x+1,y-2);idByArray[n][2]=new ID(x+1,y-1);
			        idArray[n][3]=new ID(x-1,y-2);idByArray[n][3]=new ID(x,y-1);
			        idArray[n][4]=new ID(x-2,y);  idByArray[n][4]=new ID(x-1,y);
			        idArray[n][5]=new ID(x+3,y);  idByArray[n][5]=new ID(x+1,y);	
			    	}
			    	if(x==5){
			        idArray[n][0]=new ID(x+2,y+2);idByArray[n][0]=new ID(x+1,y+1);
			        idArray[n][1]=new ID(x-1,y+2);idByArray[n][1]=new ID(x,y+1);
			        idArray[n][2]=new ID(x+2,y-2);idByArray[n][2]=new ID(x+1,y-1);
			        idArray[n][3]=new ID(x-1,y-2);idByArray[n][3]=new ID(x,y-1);
			        idArray[n][4]=new ID(x-2,y);  idByArray[n][4]=new ID(x-1,y);
			        idArray[n][5]=new ID(x+3,y);  idByArray[n][5]=new ID(x+2,y);
			    	}
			    	if(x==7){
			        idArray[n][0]=new ID(x+1,y+2);idByArray[n][0]=new ID(x,y+1);
			        idArray[n][1]=new ID(x-2,y+2);idByArray[n][1]=new ID(x-1,y+1);
			        idArray[n][2]=new ID(x+1,y-2);idByArray[n][2]=new ID(x,y-1);
			        idArray[n][3]=new ID(x-2,y-2);idByArray[n][3]=new ID(x-1,y-1);
			        idArray[n][4]=new ID(x-3,y);  idByArray[n][4]=new ID(x-2,y);
			        idArray[n][5]=new ID(x+2,y);  idByArray[n][5]=new ID(x+1,y);
			    	}
			    	if(x==8){
			        idArray[n][0]=new ID(x+1,y+2);idByArray[n][0]=new ID(x,y+1);
			        idArray[n][1]=new ID(x-1,y+2);idByArray[n][1]=new ID(x-1,y+1);
			        idArray[n][2]=new ID(x+1,y-2);idByArray[n][2]=new ID(x,y-1);
			        idArray[n][3]=new ID(x-1,y-2);idByArray[n][3]=new ID(x-1,y-1);
			        idArray[n][4]=new ID(x-3,y);  idByArray[n][4]=new ID(x-1,y);
			        idArray[n][5]=new ID(x+2,y);  idByArray[n][5]=new ID(x+1,y);
			    	}
			    	if(x==9||x==10||x==11||x==12){
			        idArray[n][0]=new ID(x+1,y+2);idByArray[n][0]=new ID(x,y+1);
			        idArray[n][1]=new ID(x-1,y+2);idByArray[n][1]=new ID(x-1,y+1);
			        idArray[n][2]=new ID(x+1,y-2);idByArray[n][2]=new ID(x,y-1);
			        idArray[n][3]=new ID(x-1,y-2);idByArray[n][3]=new ID(x-1,y-1);
			        idArray[n][4]=new ID(x-2,y);  idByArray[n][4]=new ID(x-1,y);
			        idArray[n][5]=new ID(x+2,y);  idByArray[n][5]=new ID(x+1,y);
			    	}			    	
		        }
		        flag=0;	
		}
	//	  System.out.println(((Dimension)stack.peek()).toString());
	//	  System.out.println("n="+n);
		//System.out.println(i+" "+j);

	//	System.out.println(idArray[1][1].getX()+idArray[1][1].getY());
	    if(idGo.getY()-idLeave.getY()==1||idGo.getY()-idLeave.getY()==-1){
	       	while(true){
	       		if(idByArray[i][j]==null)
	       		break search;
	       		if(idByArray[i][j].getX()==idGo.getX()&&idByArray[i][j].getY()==
	       		   idGo.getY()){
	       		    stack.push(new Dimension(0,0));
	                idArray[0][0]=idGo;
	               	break search;
	            }
	            else if(j==5)
	            break search;
	            else j++;
	       	}    
	    }
	   else if(idGo.getY()-idLeave.getY()==0&&((idLeave.getX()==5&&idLeave.getY()%2!=0&&
	       (idGo.getX()-idLeave.getX()==2||idGo.getX()-idLeave.getX()==-1))||(idLeave.getX()==7&&idLeave.getY()%2!=0&&
	       (idGo.getX()-idLeave.getX()==-2||idGo.getX()-idLeave.getX()==1))||
	       (Math.abs(idLeave.getX()-idGo.getX())==1&&
	       idLeave.getY()%2==0)||((idLeave.getX()<5||idLeave.getX()>7)&&
	       Math.abs(idLeave.getX()-idGo.getX())==1&&idLeave.getY()%2!=0))){
	       	while(true){
	       		if(idByArray[i][j]==null)
	       		break search;
	       		if(idByArray[i][j].getX()==idGo.getX()&&idByArray[i][j].getY()==
	       		   idGo.getY()){

	       		    stack.push(new Dimension(0,0));
	                idArray[0][0]=idGo;
	                System.out.println("yes");
	               	break search;
	            }
	            else if(j==5)
	            break search;
	            else j++;
	       	}   
	    	
	    }
	    else{
	        if(j<=5&&idArray[i][j]!=null&&idByArray[i][j]!=null){
	            id=idArray[i][j];
		        idBy=idByArray[i][j];
	    	    System.out.println("x="+id.getX()+" y="+id.getY());
		        stack.push(new Dimension(i,j));
    		    System.out.println("Stack is "+"i="+((Dimension)stack.peek()).width+
	  	        " j="+((Dimension)stack.peek()).height);
		    
		        int m=id.getX(),q=id.getY();
		        int d=idBy.getX(),k=idBy.getY();
		        int initPass=0;
		        while(pass[initPass]!=null){
			        if(pass[initPass].getX()==id.getX()&&pass[initPass].getY()
			           ==id.getY())
			           isPass=true;	 
			         initPass++;
		        }
		        if(id!=null){
	  //		        System.out.println("isPass="+isPass);
	   	//	        System.out.println("passNum="+passNum);
	   	            if((q>=0&&q<=16)&&(k>=0&&k<=16)&&(m>=0&&m<=12)&&(d>=0&&d<=12)){
			            if(table[q][m].getState()==0&&table[k][d].getState()==1&&!isPass){
				            flag=1;
				            n++;
				            j=0;
				            i=n;
	  			        System.out.println("fuck");
				            pass[passNum++]=id;
				            isPass=false;				
			            }
			            else{
				            stack.pop();
				            j++;
				            System.out.println("yes");
				            isPass=false;
			            }
			        }
			        else{
			             stack.pop();
				         j++;
				         System.out.println("man");
				         isPass=false;
			        }
		        }
	        }
		    else{
	        	if(i==1) break;
		        Dimension di=(Dimension)stack.pop();
			    i=di.width;
			    j=di.height;
			    j++;
			System.out.println("no");
	    	}
		System.out.print("flag="+flag);
		System.out.print(" n="+n);
		System.out.print(" i="+i);
		System.out.println(" j="+j);
		System.out.println("Stack is "+"i="+((Dimension)stack.peek()).width+
		" j="+((Dimension)stack.peek()).height);
	    System.out.println("x="+id.getX()+" "+"y="+id.getY());	
	    System.out.println();
	        }
    	}
/*	while(!stack.empty()){
		Dimension b=(Dimension)stack.pop();
		sta.push(idArray[b.width][b.height]);
	}*/
	Dimension dc=(Dimension)stack.pop();	
	if(idArray[dc.width][dc.height].getX()==idGo.getX()&&
	   idArray[dc.width][dc.height].getY()==idGo.getY()){
//		System.out.println("dc.width="+dc.width+" dc.height="+dc.height);
		return true;
	}
    else return false;
}

	
	
}

⌨️ 快捷键说明

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