コード例 #1
0
        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);
        }
コード例 #2
0
        private PlayerDataDTO SetPlayerData()
        {
            var playerData = new PlayerDataDTO();

            playerData.DiceValue = RollDice();
            playerData.Position  = Position;
            playerData.Shields   = Shields;
            return(playerData);
        }
コード例 #3
0
 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);
 }
コード例 #4
0
        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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
 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);
 }
コード例 #9
0
        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);
        }
コード例 #10
0
 internal virtual PlayerDataDTO Calculate(PlayerDataDTO playerData, int exitPoint) => playerData;
コード例 #11
0
 internal override PlayerDataDTO Calculate(PlayerDataDTO playerData, int exitPoint)
 {
     playerData.Position = exitPoint;
     return(playerData);
 }