Beispiel #1
0
 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;
 }
Beispiel #2
0
 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);
        }
Beispiel #4
0
        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();
     }
 }
Beispiel #6
0
 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);
                    }
                }
            }
        }
Beispiel #8
0
        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);
        }
Beispiel #10
0
 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);
 }
Beispiel #11
0
 private bool isValidQuit(CheckersPlayer i_Player, CheckersPlayer i_Opponent)
 {
     return(i_Player.IsValidPointsDifference(i_Opponent));
 }
Beispiel #12
0
 private void updatePlayersMembers()
 {
     m_PlayerTurn = ((m_CurrentTurnIndex % 2) == 0) ? m_Player1 : m_Player2;
     m_Opponent   = ((m_CurrentTurnIndex % 2) == 0) ? m_Player2 : m_Player1;
 }