Example #1
0
 public LMoveFixture()
 {
     _piece  = Helper.GetMockedPieceAt(4, 4, PieceColor.Black);
     _pieces = new List <IPiece> {
         _piece
     };
     _sut = new LMove();
 }
Example #2
0
        public void KnightTypePiece_ShouldReturn_LMoves(int x, int y)
        {
            // arrange
            var moveStrategy = new LMove();
            var move         = new Position(x, y);

            // act
            var moves = _sut.GetAvailableMoves(_pieces);

            // assert
            Assert.Contains(move, moves);
        }
Example #3
0
 public KeyboardControls(Keys lMov = Keys.Left, Keys rMov = Keys.Right, Keys lRot = Keys.Z, Keys rRot = Keys.X, Keys hold = Keys.C, Keys softDrop = Keys.Down, Keys hardDrop = Keys.Space, float delayedAutoShift = 133, float autoRepeatRate = 5) : base()
 {
     LMove.AddKeyboardKey(lMov);
     RMove.AddKeyboardKey(rMov);
     LRotate.AddKeyboardKey(lRot);
     RRotate.AddKeyboardKey(rRot);
     Hold.AddKeyboardKey(hold);
     SoftDrop.AddKeyboardKey(softDrop);
     HardDrop.AddKeyboardKey(hardDrop);
     LMove.SetRepeat(delayedAutoShift / 1000, autoRepeatRate / 1000);
     RMove.SetRepeat(delayedAutoShift / 1000, autoRepeatRate / 1000);
 }
Example #4
0
        public static void AddTransition(List <ICommand> commands, TCoord current, TCoord target, TModel model, bool doFill)
        {
            Fill fill = new Fill();

            fill.Diff.Dx = 0;
            fill.Diff.Dy = 0;
            fill.Diff.Dz = 0;

            if (model[current.X, current.Y, current.Z] > 0 && doFill)
            {
                commands.Add(fill);
            }

            int xDiff = target.X > current.X ? 1 : -1;
            int yDiff = target.Y > current.Y ? 1 : -1;
            int zDiff = target.Z > current.Z ? 1 : -1;

            while (Math.Abs(current.X - target.X) > 1 ||
                   Math.Abs(current.Y - target.Y) > 1 ||
                   Math.Abs(current.Z - target.Z) > 1)
            {
                LMove lMove = new LMove();

                lMove.Diff1.Dx = Math.Abs(current.X - target.X) > 1 ? xDiff : 0;
                lMove.Diff1.Dy = Math.Abs(current.Y - target.Y) > 1 ? yDiff : 0;
                lMove.Diff1.Dz = Math.Abs(current.Z - target.Z) > 1 ? zDiff : 0;

                lMove.Diff2.Dx = Math.Abs(current.X - target.X) > 0 ? xDiff : 0;
                lMove.Diff2.Dy = Math.Abs(current.Y - target.Y) > 0 ? yDiff : 0;
                lMove.Diff2.Dz = Math.Abs(current.Z - target.Z) > 0 ? zDiff : 0;

                commands.Add(lMove);

                current.X += lMove.Diff1.Dx + lMove.Diff2.Dx;
                current.Y += lMove.Diff1.Dy + lMove.Diff2.Dy;
                current.Z += lMove.Diff1.Dz + lMove.Diff2.Dz;

                if (model[current.X, current.Y, current.Z] > 0 && doFill)
                {
                    commands.Add(fill);
                }
            }

            while (Math.Abs(current.X - target.X) > 0 ||
                   Math.Abs(current.Y - target.Y) > 0 ||
                   Math.Abs(current.Z - target.Z) > 0)
            {
                StraightMove sMove = new StraightMove();

                sMove.Diff.Dx = Math.Abs(current.X - target.X) > 0 ? xDiff : 0;
                sMove.Diff.Dy = Math.Abs(current.Y - target.Y) > 0 ? yDiff : 0;
                sMove.Diff.Dz = Math.Abs(current.Z - target.Z) > 0 ? zDiff : 0;

                commands.Add(sMove);

                current.X += sMove.Diff.Dx;
                current.Y += sMove.Diff.Dy;
                current.Z += sMove.Diff.Dz;

                if (model[current.X, current.Y, current.Z] > 0 && doFill)
                {
                    commands.Add(fill);
                }
            }
        }