📄 ibox.java
字号:
/*
* 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 + -