예제 #1
0
        public void Update()
        {
            if (piece.Move(Direction.Down))
            {
                this.DeletedRowNum = 0;
                return;
            }

            int deletedRowNum;

            field.Update(out deletedRowNum);
            this.DeletedRowNum = deletedRowNum;

            if (piece.Y <= 0)
            {
                this.IsGameOver = true;
                return;
            }

            // Get the next piece
            var nextPiece = pieceQueue.Dequeue();

            nextField.RemovePiece(nextPiece);

            nextPiece.Field = this.field;
            nextPiece.X     = this.field.COLS / 2;
            nextPiece.Y     = 0;
            this.piece      = nextPiece;

            nextPiece = createPiece(nextField, nextField.COLS / 2, nextField.ROWS / 2);
            pieceQueue.Enqueue(nextPiece);
            nextField.Draw();
        }
예제 #2
0
        public bool Rotate(RtDirection direction)
        {
            Field.RemovePiece(this);
            bool rotated = false;

            if (canRotate(direction))
            {
                Rotator.Rotate(Shape, direction);
                rotated = true;
            }

            Field.PutPiece(this);
            Field.Draw();
            return(rotated);
        }
예제 #3
0
        public bool Move(Direction direction)
        {
            Field.RemovePiece(this);
            bool moved = false;

            if (canMove(direction))
            {
                Mover.Move(ref pos, direction);
                moved = true;
            }

            Field.PutPiece(this);
            Field.Draw();
            return(moved);
        }