Block.java



/** 落下するブロックBlockクラス */

public class Block {

    /** ブロックの位置 */

        protected int x, y;

    /** 以前のブロックの位置 */

        protected int old_x, old_y;

    /** ブロックの移動の可能性 */

        protected boolean dropFlag, toLeftFlag, toRightFlag;

    /** セルの状態 */

        protected int top, middle, bottom;

    /** コンストラクタ(クラスの新しいデータの生成を行う)*/

        Block( int top, int middle, int bottom ) {
              x = 0;  y = 0;
              old_x = 0;  old_y = 0;
              dropFlag = false;
              toLeftFlag = false;
              toRightFlag = false;
              this.top = top;
              this.middle = middle;
              this.bottom = bottom;
        }

    /** ブロックのX座標を設定するメソッド */

        public void setX( int x ){  this.x = x;  }

    /** ブロックのX座標を得るメソッド */

        public int getX(){  return x;  }

    /** ブロックのY座標を設定するメソッド */

        public void setY( int y ){  this.y = y;  }

    /** ブロックのY座標を得るメソッド */

        public int getY(){  return y;  }

    /** ブロックの古いX座標を得るメソッド */

        public int getOldX(){  return old_x;  }

    /** ブロックの古いY座標を得るメソッド */

        public int getOldY(){  return old_y;  }

    /** 一番上のブロックの状態を返すメソッド */

        public int getTopState(){  return top;  }

    /** 中央のブロックの状態を返すメソッド */

        public int getMiddleState(){  return middle;  }

    /** 一番下のブロックの状態を返すメソッド */

        public int getBottomState(){  return bottom;  }

    /** ブロックの左への移動を可能にするメソッド */

        public void enableToLeft(){  toLeftFlag = true;  }

    /** ブロックの左への移動を不可能にするメソッド */

        public void disableToLeft(){  toLeftFlag = false;  }

    /** ブロックの左への移動を可能か調べるメソッド */

        public boolean checkToLeft(){  return toLeftFlag;  }

    /** ブロックの左への移動を実行するメソッド */

        public void toLeft(){
              if( toLeftFlag ){
                    old_x = x; old_y = y;
                    x--;
              }
        }

    /** ブロックの右への移動を可能にするメソッド */

        public void enableToRight(){  toRightFlag = true;  }

    /** ブロックの右への移動を不可能にするメソッド */

        public void disableToRight(){  toRightFlag = false;  }

    /** ブロックの右への移動を可能か調べるメソッド */

        public boolean checkToRight(){  return toRightFlag;  }

    /** ブロックの右への移動を実行するメソッド */

        public void toRight(){
              if( toRightFlag ){
                    old_x = x; old_y = y;
                    x++;
              }
        }

    /** ブロックの下の移動を不可能にするメソッド */

        public void enableDrop(){  dropFlag = true;  }

    /** ブロックの下の移動を不可能にするメソッド */

        public void disableDrop(){  dropFlag = false;  }

    /** ブロックの下への移動を可能か調べるメソッド */

        public boolean checkDrop(){  return dropFlag;  }

    /** ブロックの下への移動を実行するメソッド */

        public void drop(){
              if( dropFlag ){
                    old_x = x; old_y = y;
                    y++;
              }
        }

    /** ブロックの色を下へずらすメソッド */

        public void downColors(){
              int tmp = bottom;
              bottom = middle;
              middle = top;
              top = tmp;
        }

    /** ブロックの色を上へずらすメソッド */

        public void upColors(){
              int tmp = top;
              top = middle;
              middle = bottom;
              bottom = tmp;
        }
}