Пример #1
0
        public int GetColorOfPoint(Point point)
        {
            /*if (point > Offset)
             *  return this.Figure.CurrentRotation.GetColorOfPoint(point - this.Offset);*/
            ITetrisCup cloneCup = this.Cup.Clone(-2);

            cloneCup.CopyFrom(Figure.CurrentRotation, Offset, this.Figure.Color);
            return(cloneCup.GetColorOfPoint(point));
        }
Пример #2
0
        public void Rotate_When_BottomObstacle_Should_Move_Up()
        {
            _scene.Offset = new Offset(1, 1);
            ITetrisCup cup = A.Fake <ITetrisCup>();

            A.CallTo(() => _scene.Figure.PeekNextRotation())
            .Returns(cup);
            A.CallTo(() => cup.Fits2(_scene.Cup, new Offset(1, 1)))
            .Returns(FitsResult.BottomObstacle);
            _scene.Rotate();
            _scene.Offset.Y.Should().Be(0);
        }
Пример #3
0
        public void CopyFrom(ITetrisCup upperLayer1, Offset offset, int color)
        {
            var upperLayer = (TetrisCup)upperLayer1;

            foreach (var point in upperLayer.AllCells)
            {
                if (upperLayer[point] != 0)
                {
                    this[point + offset] = color;
                }
            }
        }
Пример #4
0
        public void Rotate_When_Fits2_Returns_RightObstacle_Should_MoveLeft()
        {
            _scene.Offset = new Offset(1, 2);
            ITetrisCup cup = A.Fake <ITetrisCup>();

            A.CallTo(() => _scene.Figure.PeekNextRotation())
            .Returns(cup);
            A.CallTo(() => cup.Fits2(_scene.Cup, new Offset(1, 2)))
            .Returns(FitsResult.RightObstacle);
            A.CallTo(() => cup.Fits2(_scene.Cup, new Offset(0, 2)))
            .Returns(FitsResult.Fits);
            _scene.Rotate();
            _scene.Offset.X.Should().Be(0);
        }
Пример #5
0
        public FitsResult Fits2(ITetrisCup lowerCup, Offset offset)
        {
            var lowerCup1 = (TetrisCup)lowerCup;

            if (lowerCup1._size.Width < (this._size.Width + offset.X))
            {
                return(FitsResult.RightObstacle);
            }
            if (!this.Fits(lowerCup1, offset))
            {
                return(FitsResult.BottomObstacle);
            }
            return(FitsResult.Fits);
        }
Пример #6
0
        public bool Fits(ITetrisCup intoCup1, Offset offset)
        {
            var intoCup = (TetrisCup)intoCup1;

            if (intoCup._size.StrictlyLess(this._size + offset))
            {
                return(false);
            }
            if (offset.X < 0)
            {
                return(false);
            }
            foreach (var point in AllCells)
            {
                if (this[point] != 0 && intoCup[point + offset] != 0)
                {
                    return(false);
                }
            }
            return(true);
        }
Пример #7
0
 public FitsResult Fits2(ITetrisCup lowerCup, Offset offset)
 {
     var lowerCup1 = (TetrisCup)lowerCup;
     if (lowerCup1._size.Width < (this._size.Width + offset.X))
         return FitsResult.RightObstacle;
     if (!this.Fits(lowerCup1, offset))
         return FitsResult.BottomObstacle;
     return FitsResult.Fits;
 }
Пример #8
0
 public bool Fits(ITetrisCup intoCup1, Offset offset)
 {
     var intoCup = (TetrisCup)intoCup1;
     if (intoCup._size.StrictlyLess(this._size + offset))
         return false;
     if (offset.X < 0) return false;
     foreach (var point in AllCells)
         if (this[point] != 0 && intoCup[point + offset] != 0)
             return false;
     return true;
 }
Пример #9
0
 public void CopyFrom(ITetrisCup upperLayer1, Offset offset, int color)
 {
     var upperLayer = (TetrisCup)upperLayer1;
     foreach (var point in upperLayer.AllCells)
         if (upperLayer[point] != 0)
             this[point + offset] = color;
 }