internal PlayerDataDTO MoveOnBoard(PlayerDataDTO playerData) { var newPlayerData = CalculateNextPostion(playerData); return(newPlayerData); //return new MoveResult(newPlayerData.Name, playerData.Color, playerData.Position, newPosition , playerData.DiceValue, playerData.Shields); }
private PlayerDataDTO SetPlayerData() { var playerData = new PlayerDataDTO(); playerData.DiceValue = RollDice(); playerData.Position = Position; playerData.Shields = Shields; return(playerData); }
private PlayerDataDTO CheckShortCut(PlayerDataDTO playerData) { foreach (ShortCut cut in _shortCuts) { if (cut.Start == playerData.Position) { //return cut.End; return(cut.Calculate(playerData, ExitPoint)); } } return(playerData); }
internal MoveResult MoveOn(Board board) { DiceValue = RollDice(); var oldPosition = Position; //var newPosition = board.CalculateNextPostion(oldPosition, diceValue); PlayerDataDTO playerData = SetPlayerData(); PlayerDataDTO newPlayerData = board.MoveOnBoard(playerData); //Position = newPosition; Position = newPlayerData.Position; Shields = newPlayerData.Shields; return(new MoveResult(Name, Color, oldPosition, Position, DiceValue, Shields)); }
public void CalculateNextPosition_RegularCalculation_ReturnsPositionPlusDice() { BoardDataDto boardData = new BoardDataDto(); //Arrange boardData.Height = 2; boardData.Width = 10; Board board = new Board(boardData); var playerData = new PlayerDataDTO(); playerData.Position = 1; playerData.DiceValue = 5; playerData.Shields = 0; var pos = board.CalculateNextPostion(playerData).Position; Assert.AreEqual(6, pos); }
public void CalculateNextPosition_NextPositionExceedsExitPoint_ReturnsSamePosition() { BoardDataDto boardData = new BoardDataDto(); //Arrange boardData.Height = 2; boardData.Width = 10; Board board = new Board(boardData); var playerData = new PlayerDataDTO(); playerData.Position = 18; playerData.DiceValue = 5; playerData.Shields = 0; var pos = board.CalculateNextPostion(playerData).Position; Assert.AreEqual(18, pos); }
internal PlayerDataDTO CalculateNextPostion(PlayerDataDTO playerData) { var newPosition = playerData.Position; // First calculate newPosition = position + diceValue // First of all if newPosition exceeds the cells of the board then player cannot move. if (newPosition + playerData.DiceValue <= ExitPoint) { newPosition = playerData.Position + playerData.DiceValue; } playerData.Position = newPosition; // if player ends up on a shortcut they should move to the end of the shortcut so newPosition is calculated again. var newPlayerData = CheckShortCut(playerData); //return newPosition; return(newPlayerData); }
internal override PlayerDataDTO Calculate(PlayerDataDTO playerData, int exitPoint) { if (Start > End) // it's a ladder { playerData.Position = End; } else // it's a snake { if (playerData.Shields <= 0) { playerData.Position = End; } else { playerData.Shields--; } } return(playerData); }
public void CalculateNextPosition_NextPositionIsLadder_ReturnsRightValue() { BoardDataDto boardData = new BoardDataDto(); //Arrange boardData.Height = 2; boardData.Width = 10; Board board = new Board(boardData); board.AddLadderToBoard(new RegularShortCut(2, 5)); var playerData = new PlayerDataDTO(); playerData.Position = 1; playerData.DiceValue = 1; playerData.Shields = 0; var x = board.CalculateNextPostion(playerData).Position; Assert.AreEqual(5, x); }
internal virtual PlayerDataDTO Calculate(PlayerDataDTO playerData, int exitPoint) => playerData;
internal override PlayerDataDTO Calculate(PlayerDataDTO playerData, int exitPoint) { playerData.Position = exitPoint; return(playerData); }