internal CheckersMove(CheckersPlayer i_Player, CheckersPlayer i_Opponent, CheckersBoard i_GameBoard) { r_Player = i_Player; r_Opponent = i_Opponent; r_GameBoard = i_GameBoard; m_IsPieceBecomeKing = false; m_IsNeedToEatAgain = false; }
internal void UpdateAllPlayerPieces(CheckersPlayer i_Player) { foreach (CheckersPiece piece in i_Player.PlayerPieces) { UpdatePossibleSimpleMoves(piece); updatePossibleEatMoves(piece); } }
internal bool IsValidPointsDifference(CheckersPlayer i_Opponent) { int sumOfPlayerPoints = this.GetPlayerPoints(); int sumOfOpponentPoints = i_Opponent.GetPlayerPoints(); bool isValidPointsForQuit = (sumOfPlayerPoints - sumOfOpponentPoints) <= 0; return(isValidPointsForQuit); }
private void updateIsLegalMovesLeft(CheckersPlayer i_Player) { i_Player.IsLegalMovesLeft = false; foreach (CheckersPiece piece in i_Player.PlayerPieces) { i_Player.IsLegalMovesLeft = i_Player.IsLegalMovesLeft || piece.PossibleSimpleMoves.Any() || piece.PossibleEatMoves.Any(); } }
private void updatePlayerScoreInCurrentGame(CheckersPlayer i_Player, CheckersPlayer i_Opponent) { if (i_Opponent.IsWin) { i_Opponent.ScoreInCurrentGame = i_Opponent.GetPlayerPoints() - i_Player.GetPlayerPoints(); } else { i_Player.ScoreInCurrentGame = i_Player.GetPlayerPoints() - i_Opponent.GetPlayerPoints(); } }
internal CheckersMove(CheckersPlayer i_Player, CheckersPlayer i_Opponent, CheckersBoard i_GameBoard, int[] i_StartingLocation, int[] i_DestinationLocation) { r_Player = i_Player; r_Opponent = i_Opponent; r_CurremtRow = i_StartingLocation[0]; r_CurrentColumn = i_StartingLocation[1]; r_TargetRow = i_DestinationLocation[0]; r_TargetColumn = i_DestinationLocation[1]; r_GameBoard = i_GameBoard; m_IsPieceBecomeKing = false; m_IsNeedToEatAgain = false; }
private void initilaizePlayerPieces(CheckersPlayer i_Player) { i_Player.PlayerPieces = new List <CheckersPiece>(); foreach (CheckersSquare square in m_GameBoard.CheckersGameBoard) { if (square.Piece != null) { CheckersPiece.ePieceType pieceType = square.Piece.PieceType; if (pieceType == i_Player.PawnType) { i_Player.PlayerPieces.Add(square.Piece); } } } }
internal bool IsPlayerMustEat(CheckersPlayer i_Player) { bool isMustEat = false; foreach (CheckersPiece piece in i_Player.PlayerPieces) { isMustEat = piece.PossibleEatMoves.Any(); if (isMustEat) { break; } } return(isMustEat); }
internal List <int> ChooseRandomMove(CheckersPlayer i_Player, CheckersPlayer i_Opponent, CheckersBoard i_GameBoard) { m_CurrentMove = new CheckersMove(i_Player, i_Opponent, i_GameBoard); m_CurrentMove.UpdateAllPlayerPieces(i_Player); List <int> choosenMove = null; bool mustEat = m_CurrentMove.IsPlayerMustEat(i_Player); List <CheckersPiece> playerPieces = i_Player.PlayerPieces; shuffle(playerPieces); foreach (CheckersPiece piece in playerPieces) { int randomLocation; choosenMove = new List <int> { piece.Location[0], piece.Location[1] }; if (mustEat) { if (piece.PossibleEatMoves.Any()) { randomLocation = m_Random.Next(piece.PossibleEatMoves.Count); choosenMove.Add(piece.PossibleEatMoves[randomLocation][0]); choosenMove.Add(piece.PossibleEatMoves[randomLocation][1]); break; } } else if (piece.PossibleSimpleMoves.Any()) { randomLocation = m_Random.Next(piece.PossibleSimpleMoves.Count); choosenMove.Add(piece.PossibleSimpleMoves[randomLocation][0]); choosenMove.Add(piece.PossibleSimpleMoves[randomLocation][1]); break; } } return(choosenMove); }
private void initializeGameParams(string i_Player1Name, string i_Player2Name) { m_Player1 = new CheckersPlayer(i_Player1Name, CheckersPiece.ePieceType.X, CheckersPiece.ePieceType.K); m_Player2 = new CheckersPlayer(i_Player2Name, CheckersPiece.ePieceType.O, CheckersPiece.ePieceType.U); }
private bool isValidQuit(CheckersPlayer i_Player, CheckersPlayer i_Opponent) { return(i_Player.IsValidPointsDifference(i_Opponent)); }
private void updatePlayersMembers() { m_PlayerTurn = ((m_CurrentTurnIndex % 2) == 0) ? m_Player1 : m_Player2; m_Opponent = ((m_CurrentTurnIndex % 2) == 0) ? m_Player2 : m_Player1; }