Exemplo n.º 1
0
        private MancalaPlayer CreatePlayer(GameInstanceUser gameInstanceUser)
        {
            var player = new MancalaPlayer();

            player.Board = new int[7] {
                4, 4, 4, 4, 4, 4, 0
            };
            player.User = GameInstanceMapper.Map(gameInstanceUser);
            return(player);
        }
Exemplo n.º 2
0
        private List <int> GetPlayerPossibleSpotsToMove(MancalaPlayer currentPlayer)
        {
            var result = new List <int>();

            for (int i = 0; i < currentPlayer.Board.Length - 1; i++)
            {
                if (currentPlayer.Board[i] > 0)
                {
                    result.Add(i + 1);
                }
            }
            return(result);
        }
Exemplo n.º 3
0
        private void Move(int indexToMove, MancalaPlayer currentPlayer, MancalaPlayer opponentPlayer)
        {
            var currentMarblesToMove = currentPlayer.Board[indexToMove];

            currentPlayer.Board[indexToMove] = 0;
            var currentTargetIndex       = indexToMove + 1;
            var targetCurrentPlayerBoard = true;

            while (currentMarblesToMove > 0)
            {
                if (currentTargetIndex == 6)
                {
                    if (targetCurrentPlayerBoard)
                    {
                        currentPlayer.Board[currentTargetIndex] += 1;
                        currentMarblesToMove -= 1;
                        if (currentMarblesToMove == 0)
                        {
                            return;
                        }
                    }

                    targetCurrentPlayerBoard = !targetCurrentPlayerBoard;
                    currentTargetIndex       = 0;
                }
                else
                {
                    if (targetCurrentPlayerBoard)
                    {
                        var opponentIndex = 5 - currentTargetIndex;
                        if (currentPlayer.Board[currentTargetIndex] == 0 && currentMarblesToMove == 1 && opponentPlayer.Board[opponentIndex] > 0)
                        {
                            currentPlayer.Board[6] += currentMarblesToMove;
                            currentMarblesToMove   -= 1;
                            currentPlayer.Board[6] += opponentPlayer.Board[opponentIndex];
                            opponentPlayer.Board[opponentIndex] = 0;
                        }
                        else
                        {
                            MoveStandardSpot(currentPlayer, ref currentMarblesToMove, ref currentTargetIndex);
                        }
                    }
                    else
                    {
                        MoveStandardSpot(opponentPlayer, ref currentMarblesToMove, ref currentTargetIndex);
                    }
                }
            }

            _gameState.IsPlayer1Turn = !_gameState.IsPlayer1Turn;
        }
Exemplo n.º 4
0
 private void MoveStandardSpot(MancalaPlayer player, ref int currentMarblesToMove, ref int currentTargetIndex)
 {
     player.Board[currentTargetIndex] += 1;
     currentMarblesToMove             -= 1;
     currentTargetIndex++;
 }