public LMoveFixture() { _piece = Helper.GetMockedPieceAt(4, 4, PieceColor.Black); _pieces = new List <IPiece> { _piece }; _sut = new LMove(); }
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); }
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); }
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); } } }