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

📄 ibox.java

📁 俄罗斯方块的java源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * Created on 2004-11-15
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Softmedical
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.util.*;
class IBox extends Structrue{
	/*              a
	 *   a a a a    a
	 *              a
	 *              a
	 * 
	 * 
	 * */
	public static final int IBOX_V=0,
	                        IBOX_H=1;
	
    public IBox(ActionBtn actionbtn){
    	super(actionbtn);
    	//btn[1] is always stay the same when reshape...
    	    this.setShape(new Random().nextInt(2));
    	    switch(getShape()){
    	    	case IBOX_H://horizontal
    	    		btn[1].setLocation(15*9,0);
    	    		break;
    	    	case IBOX_V://vertical
    	    		btn[1].setLocation(15*9,0+15);
    	    		
    	    		break;
    	    }
    	    this.reshape();
			}
    
 
 protected void configDown(){
     	this.downfactor=new DownFactor(){
        public boolean canMoveDown(){
        	int col=btn[1].getX()/15,
		        row=btn[1].getY()/15;
          switch(getShape()){
            case IBOX_V://h
            	if(row==39)return false;
            	if(row<39&&col>0)
            	if(conbtn.getFlag(row+1,col-1))return false;
            	if(row<39)
            	if(conbtn.getFlag(row+1,col))return false;
            	if(row<39&&col<19)
            	if(conbtn.getFlag(row+1,col+1))return false;
            	if(row<39&&col<38)
            	if(conbtn.getFlag(row+1,col+2))return false;
            	  break;
            
        	
        	
        	
        	case IBOX_H://v
        		if(row+2==39)return false;
            	   if(row<=40-4&&col>=0&&col<=19){
        		    if(conbtn.getFlag(row+3,col))return false;}
        		    break;
              	}
        	  return true;	
           }
        };
     	
 }
 protected   void configRight(){
     	this.rightfactor=new RightFactor(){
     	  public boolean canMoveRight(){
     		int col=btn[1].getX()/15,
                row=btn[1].getY()/15;
     		switch(getShape()){
      			case IBOX_H://v
      		  if(col==19)return false; 
      	      	for(int i=-1;i<3;i++){
      			  if(row>0&&row<=37&&col>=0&&col<=18)
      				if(conbtn.getFlag(row+i,col+1))return false;}
      		         
      				 break;
      			case IBOX_V://h
      				if(col==19-2)return false;
      				if(row>=0&&row<=39&&col>=0&&col<=16){
      				if(conbtn.getFlag(row,col+3))return false;}
      				
      				break;
      		}
      			
     	return true;	
     	
     	}};
     	
    
     }
 protected void configLeft(){
  	this.leftfactor=new LeftFactor(){
  		public boolean canMoveLeft(){
  			int col=btn[1].getX()/15,
                row=btn[1].getY()/15;
  			switch(getShape()){
  			case IBOX_V://H
  				if(col==1)return false;
  				if(col>1)
  				if(conbtn.getFlag(row,col-2))return false;
  				                 break;
  			case IBOX_H://V
  				if(col==0)return false;
  				if(row>0&&col>0)
  				if(conbtn.getFlag(row-1,col-1))return false;
  				if(col>0)
  				if(conbtn.getFlag(row,col-1))return false;
  				if(row<39&col>0)
  				if(conbtn.getFlag(row+1,col-1))return false;
  				if(row<38&&col>0)
  				if(conbtn.getFlag(row+2,col-1))return false;
  				 
  			      				 break;
  				
  	  		}			

  		
	
  			
  			return true;}
  	
  	};
  
    }
  protected void configReshape(){
  	this.reshapefactor=new ReshapeFactor(){
  		 //                         a        a|
	     	//                    a a a a    a|
	     	//                      a        a|
	     	//                      a        a|
	     	//                           
  	public boolean canReshape(){
  		int col=btn[1].getX()/15,
            row=btn[1].getY()/15;
  		 
  		switch(getShape()){
  	     case IBOX_H://v
  	     	if(!rightfactor.canMoveRight())return false;
  	        //if(!downfactor.canMoveDown())return false;
  	        if(!leftfactor.canMoveLeft())return false;
  	        if(col==19-1)return false;
  	        if(row>=0&&row<=40-1&&col>0&&col<=20-3){
  	        
  	        if(conbtn.getFlag(row,col-1))return false;
  	        if(conbtn.getFlag(row,col+1))return false;
  	        if(conbtn.getFlag(row,col+2))return false;}
  	    	
  	      break;		
  	     case  IBOX_V://h
  	     	
  	        //if(!downfactor.canMoveDown())return false;
  	        if(row>=38)return false;
  	        if(row<=40-3&&row>0&&col>=0&&col<=20-1){
  	        if(conbtn.getFlag(row-1,col))return false;
   	     	if(conbtn.getFlag(row+1,col))return false;
   	     	if(conbtn.getFlag(row+2,col))return false;}
  	     	
  	     	  break;
  		
  		}
  		
  		return true;}
  	 };
  }
  

  public  void reshape(){
  	if(reshapefactor.canReshape()){
  	switch(this.getShape()){
  		case IBOX_H://HORIZONTAL...
  			this.setShape(IBOX_V);
  			//btn[1] is not changed...
  			// * 
  			//****
  			// *
  			// *
  			btn[0].setLocation(btn[1].getX()-15,btn[1].getY());
  			btn[2].setLocation(btn[1].getX()+15,btn[1].getY());
  			btn[3].setLocation(btn[2].getX()+15,btn[1].getY());
  			
  			  			
  			break;
  		case IBOX_V://VETICAL...
  			this.setShape(IBOX_H);
  		
  			
  			btn[0].setLocation(btn[1].getX(),btn[1].getY()-15);
  			btn[2].setLocation(btn[1].getX(),btn[1].getY()+15);
  			btn[3].setLocation(btn[1].getX(),btn[2].getY()+15);
  			
  			
  			break;
  	
  	
  	  }	
  	
  	}
  
  
  }
	
}



class TBox extends Structrue{
	/*
	 * a                 a     a
	 * a a    a a a    a a   a a a
	 * a        a        a   
	 * 
	 * 
	 * */
	public static final int TBOX_L=0,
	                        TBOX_R=1,
	                        TBOX_U=2,
	                        TBOX_D=3;
	
	
	
public TBox(ActionBtn conbtn){
	super(conbtn);
	this.setShape(new Random().nextInt(4));
    switch(this.getShape()){
    case TBOX_L:
    case TBOX_R:
    case TBOX_U:
    	btn[1].setLocation(15*9,15);
     	break;
    case TBOX_D:
    	btn[1].setLocation(15*8,0);
    	break;
      }	
    this.reshape();
   }
	public void configDown(){
	  this.downfactor=new DownFactor(){
	    	
	      public boolean canMoveDown(){
	      	int row=btn[1].getY()/15,
                col=btn[1].getX()/15;
	      	switch(getShape()){
			    case TBOX_L://down
			    	if(row==38)return false;
			    	if(row<39&&col>0)
			    	if(conbtn.getFlag(row+1,col-1))return false;
                    if(row<39&&col<19)
			    	if(conbtn.getFlag(row+1,col+1))return false;
                    if(row<38)
			    	if(conbtn.getFlag(row+2,col))return false;
			    	
			    	
			    	
			    	break;
			    case TBOX_R://up
			    	if(row==39)return false;
			    	if(row<39&&col>0)
			    	if(conbtn.getFlag(row+1,col-1))return false;
                    if(row<39)
			    	if(conbtn.getFlag(row+1,col))return false;
                    if(row<39&&col<19)
			    	if(conbtn.getFlag(row+1,col+1))return false;
			    	
			    	
			    	
			    	break;
			    case TBOX_U://left
			    	if(row==38)return false;
			    	if(row<39&&col>0)
			    	if(conbtn.getFlag(row+1,col-1))return false;
			    	if(row<38)
			    	if(conbtn.getFlag(row+2,col))return false;
			    	
			    	
			    	
			    	
			    	break;
			    case TBOX_D://right
			    	if(row==38)return false;
			    	if(row<38)
			    	if(conbtn.getFlag(row+2,col))return false;
			    	if(row<39&&col<19)
			    	if(conbtn.getFlag(row+1,col+1))return false;
			    	
			    	
			    	
			    	
			    	break;
			      }	
	      	
	      	
	      	
	        return true;	
	      }	
	  
	  
	  };
	
	}
	public void configLeft(){
		
	this.leftfactor=new LeftFactor(){
		
	public boolean canMoveLeft(){
		int row=btn[1].getY()/15,
            col=btn[1].getX()/15;
		switch(getShape()){
		    case TBOX_L: //down
		   // if(!downfactor.canMoveDown())return false;
		    if(col==1)return false;
		    if(row<39&&col>0)
		    if(conbtn.getFlag(row+1,col-1))return false;
		    if(col>1)
		    if(conbtn.getFlag(row,col-2))return false;
		    
		    
		    break;
		    
		   
		    case TBOX_R://up
			// if(!downfactor.canMoveDown())return false;
		    if(col==1)return false;
		    if(row>0&&col>0)
		    if(conbtn.getFlag(row-1,col-1))return false;
		    if(col>1)
		    if(conbtn.getFlag(row,col-2))return false;
			 
			 
		    	break;
		    case TBOX_U://left
		    	// if(!downfactor.canMoveDown())return false;
		    	 if(col==1)return false;
		    	 if(row>0&&col>0)
		    	 if(conbtn.getFlag(row-1,col-1))return false;
		    	 if(col>1)
		    	 if(conbtn.getFlag(row,col-2))return false;
		    	 if(row<39&&col>0)
		    	 if(conbtn.getFlag(row+1,col-1))return false;
		    	
		    	break;
		    case TBOX_D:
		    	// if(!downfactor.canMoveDown())return false;
		    	 if(col==0)return false;
		    	 if(row>0&&col>0&&row<40&&col<20)
		    	 if(conbtn.getFlag(row-1,col-1))return false;
		    	 if(col>0)
		    	 if(conbtn.getFlag(row,col-1))return false;
		    	 if(row<39&&col>0)
		    	 if(conbtn.getFlag(row+1,col-1))return false;
		    	
		    	
		    	break;//right
		      }	
		
		
		
		
		
	return true;
	
	}	
	
	
	};
	
	
	}

	public void configRight(){
	this.rightfactor=new RightFactor(){
	public boolean canMoveRight(){
		int row=btn[1].getY()/15,
	        col=btn[1].getX()/15;
		switch(getShape()){
		    case TBOX_L://d
		    	//if(!downfactor.canMoveDown())return false;
		    	if(col==18)return false;
		    	if(col<18)
		    	if(conbtn.getFlag(row,col+2))return false;
		        if(row<39&&col<19)
		    	if(conbtn.getFlag(row+1,col+1))return false;
		    	
		    	
		    	
		    	break;
		    case TBOX_R://u
		    	//if(!downfactor.canMoveDown())return false;
		    	if(col==18)return false;
		    	if(col<18)
		    	if(conbtn.getFlag(row,col+2))return false;
		        if(row>0&&col<19)
		    	if(conbtn.getFlag(row-1,col+1))return false;
		    	
		    	
		    	
		    	break;
		    case TBOX_U://l
		    	//if(!downfactor.canMoveDown())return false;
		    	if(col==19)return false;
		    	if(row>0&&col<19)
		    	if(conbtn.getFlag(row-1,col+1))return false;
		    	if(col<19)
		    	if(conbtn.getFlag(row,col+1))return false;
		    	if(row<39&&col<19)
		    	if(conbtn.getFlag(row+1,col+1))return false;
		    	
		    	
		    	break;
		    case TBOX_D://r
		    	//if(!downfactor.canMoveDown())return false;
		    	if(col==18)return false;
		    	if(row>0&&col<19)
		    	if(conbtn.getFlag(row-1,col+1))return false;
		    	if(col<18&&row<40)
		    	if(conbtn.getFlag(row,col+2))return false;
		    	if(row<39&&col<19)
		    	if(conbtn.getFlag(row+1,col+1))return false;
		    	
		    	break;
		      }	
		
		
		
	return true;
	}	
	
	};	
	
	
	}

	public void configReshape(){
		
	this.reshapefactor=new ReshapeFactor(){
	public boolean canReshape(){
		int row=btn[1].getY()/15,
		    col=btn[1].getX()/15;
		switch(getShape()){
		    case TBOX_L://d
		    	if(!downfactor.canMoveDown())return false;
		    	if(row>0&&col<20){
		    	if(conbtn.getFlag(row-1,col))return false;}
		    	if(row<39&&col<19){
		    	if(conbtn.getFlag(row+1,col+1))return false;}
		    	if(col>0&&row>0){
		    	if(conbtn.getFlag(row-1,col-1))return false;}
                if(row<39&&col>0)
		    	if(conbtn.getFlag(row+1,col-1))return false;
		    	break;
		    case TBOX_R://u
		    	if(!downfactor.canMoveDown())return false;
		    	if(row>0&&col<19)
		    	if(conbtn.getFlag(row-1,col+1))return false;
		    	if(row<39&&col<19)
		    	if(conbtn.getFlag(row+1,col+1))return false;
		    	if(row<39)
		    	if(conbtn.getFlag(row+1,col))return false;
		    	if(row>0&&col>0)
		    	if(conbtn.getFlag(row-1,col-1))return false;
		    	
		    	
		    	break;
		    case TBOX_U://l
		    //if(!downfactor.canMoveDown())return false;
		    	if(!rightfactor.canMoveRight())return false;
		    	if(row>0&&col<19)
		    	if(conbtn.getFlag(row-1,col+1))return false;
		    	if(col<19)
		    	if(conbtn.getFlag(row,col+1))return false;
		    	if(row<39&&col>0)
		    	if(conbtn.getFlag(row+1,col-1))return false;
		    	if(row>0&&col>0)
		    	if(conbtn.getFlag(row-1,col-1))return false;
		    	
		    	
		    	break;
		    case TBOX_D://r
		    	//if(!downfactor.canMoveDown())return false;
		    	if(!leftfactor.canMoveLeft())return false;
		    	if(row>0&&col<19)
		    	if(conbtn.getFlag(row-1,col+1))return false;
		    	if(row<39&&col<19)
		    	if(conbtn.getFlag(row+1,col+1))return false;
		    	if(col>0)
		    	if(conbtn.getFlag(row,col-1))return false;
		    	if(row>0&&col>0)
		    	if(conbtn.getFlag(row-1,col-1))return false;
		    	
		    	
		    	break;
		      }	
		
		
		
		
		
		
	return true;	
	
	}	
	
	
	};
	
	
	
	
	}
	
	
	public void reshape(){
		if(reshapefactor.canReshape()){
			int row=btn[1].getY()/15,
			    col=btn[1].getX()/15;
		  switch(this.getShape()){
		    case TBOX_R:
		    	btn[0].setLocation(btn[1].getX(),btn[1].getY()-15);
		    	btn[2].setLocation(btn[1].getX()+15,btn[1].getY());
		    	btn[3].setLocation(btn[1].getX(),btn[1].getY()+15);
		    	this.setShape(TBOX_D);
		    	break;
		    case TBOX_L:
		    	btn[0].setLocation(btn[1].getX(),btn[1].getY()+15);
		    	btn[2].setLocation(btn[1].getX()-15,btn[1].getY());
		    	btn[3].setLocation(btn[1].getX(),btn[1].getY()-15);
		    	this.setShape(TBOX_U);
		    	
		    	
		    	break;
		    case TBOX_U:
		    	btn[0].setLocation(btn[1].getX()-15,btn[1].getY());
		    	btn[2].setLocation(btn[1].getX(),btn[1].getY()-15);
		    	btn[3].setLocation(btn[1].getX()+15,btn[1].getY());
		    	this.setShape(TBOX_R);
		    	
		    	
		    	break;
		    	
		    case TBOX_D:
		    	btn[0].setLocation(btn[1].getX(),btn[1].getY()+15);
		    	btn[2].setLocation(btn[1].getX()+15,btn[1].getY());
		    	btn[3].setLocation(btn[1].getX()-15,btn[1].getY());
		    	this.setShape(TBOX_L);
		    	break;
		      }	
		
	
	
		}
	
	}

}



⌨️ 快捷键说明

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