Example #1
0
        /**
         * This method check for valid input from the player.
         */
        private static bool checkForValidInput(string i_PlayerInput)
        {
            bool          isValid      = (i_PlayerInput.Length == 2);
            int           row          = 0;
            StringBuilder errorMessage = new StringBuilder("");

            if (!isValid)
            {
                errorMessage.Append("Not a co-ordinate! please refer to given example");
            }
            else if (int.TryParse(i_PlayerInput[0].ToString(), out row))
            {
                errorMessage.Append("Illegal column input");
                isValid = false;
            }
            else
            {
                eColumnIndex col      = 0;
                bool         validCol = Enum.TryParse(i_PlayerInput[0].ToString(), false, out col);
                bool         validRow = int.TryParse(i_PlayerInput[1].ToString(), out row);
                bool         isHidden = true;

                //if the inputed letter is an option check if it is bigger than the max option
                if (!validCol || (validCol && (int)col > s_Board.Col))
                {
                    errorMessage.Append("Illegal column input");
                    validCol = false;
                }

                //checks row validity
                if (row < 1 || row > s_Board.Row)
                {
                    if (errorMessage.Length != 0)
                    {
                        errorMessage.Append(" and ");
                    }

                    errorMessage.Append("Illegal row input");
                    validRow = false;
                }

                //checks if card is shown already
                if (validRow && validCol)
                {
                    isHidden = !s_Board.IsShown(row, (int)col);
                }

                if (!isHidden && s_PlayerTurn != 3)
                {
                    errorMessage.Append("Card already chosen, pick a different card");
                }
                isValid = isHidden && validRow && validCol;
            }

            boardClearAndReBuild("");
            errorMessage.AppendLine();
            Console.Write(errorMessage.AppendLine().ToString());

            return(isValid);
        }
Example #2
0
        /**
         * This method help for quick rebuilding the board after the pick.
         */
        private static bool isMatch(string i_Card1, string i_Card2)
        {
            bool         hasMatched = true;
            int          row1       = int.Parse(i_Card1[1].ToString());
            eColumnIndex col1       = (eColumnIndex)Enum.Parse(typeof(eColumnIndex), i_Card1[0].ToString());
            int          row2       = int.Parse(i_Card2[1].ToString());
            eColumnIndex col2       = (eColumnIndex)Enum.Parse(typeof(eColumnIndex), i_Card2[0].ToString());

            boardClearAndReBuild(i_Card2);
            if (s_Board.GetShownCard(row1, (int)col1).Equals(s_Board.GetShownCard(row2, (int)col2)))
            {
                string pointMessage = "";
                if (s_PlayerTurn == 1)
                {
                    s_Player1.Score++;
                    pointMessage = s_Player1.Name;
                }
                else if (s_PlayerTurn == 2)
                {
                    s_Player2H.Score++;
                    pointMessage = s_Player2H.Name;
                }
                else
                {
                    s_Player2C.Score++;
                    pointMessage = s_Player2C.Name;
                }

                if (!s_IsHuman)
                {
                    s_Player2C.RemoveFromBoardMemory(i_Card1, i_Card2);
                }

                Console.WriteLine("{0} got a point!\n", pointMessage);
            }
            else
            {
                hasMatched = false;
                System.Threading.Thread.Sleep(2000);
                //hides first card
                s_Board.Hide(row1, (int)col1);
                //hides second card
                s_Board.Hide(row2, (int)col2);

                boardClearAndReBuild("");
            }

            return(hasMatched);
        }
Example #3
0
        /**
         * This method help for quick rebuilding the board after the pick.
         */
        private static void boardClearAndReBuild(string i_PlayerInput)
        {
            Screen.Clear();
            if (!i_PlayerInput.Equals(""))
            {
                int          row       = int.Parse(i_PlayerInput[1].ToString());
                eColumnIndex col       = (eColumnIndex)Enum.Parse(typeof(eColumnIndex), i_PlayerInput[0].ToString());
                string       cardValue = s_Board.Reveal(row, (int)col);
                if (!s_IsHuman)
                {
                    s_Player2C.AddToMemory(i_PlayerInput, cardValue);
                }
            }

            s_Board.PrintBoard();
        }