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); }
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); }
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; }
private void MoveStandardSpot(MancalaPlayer player, ref int currentMarblesToMove, ref int currentTargetIndex) { player.Board[currentTargetIndex] += 1; currentMarblesToMove -= 1; currentTargetIndex++; }