private void initBoard(int i_BoardSize)
        {
            bool setMen = false;

            CheckersMen.eSign menSign  = CheckersMen.eSign.O;
            int numOfRowsForEachPlayer = (i_BoardSize / 2);

            for (int i = 0; i < i_BoardSize; i++)
            {
                char rowKey = GetCharByDistance(r_MinRowKey, i);

                if (i == numOfRowsForEachPlayer + 1)
                {
                    menSign = CheckersMen.eSign.X;
                }

                for (int j = 0; j < i_BoardSize; j++)
                {
                    char              columnKey   = GetCharByDistance(r_MinColumnKey, j);
                    string            key         = CreateKey(columnKey, rowKey);
                    CheckersMen.eSign?slotContent = null;

                    if (setMen && (i > (numOfRowsForEachPlayer) || i < (numOfRowsForEachPlayer - 1)))
                    {
                        slotContent = menSign;
                    }

                    addBoardSlot(slotContent, key);
                    setMen = !setMen;
                }

                setMen = !setMen;
            }
        }
Exemplo n.º 2
0
        public Player(
            string i_Name,
            int i_PlayerNumber,
            eType i_Type,
            CheckersMen.eSign i_RegularSign,
            CheckersMen.eSign i_KingSign,
            char i_BaseLineRowKey,
            int i_m_AmountOfMenOnBoard)
        {
            r_Name                  = i_Name;
            r_Type                  = i_Type;
            r_PlayerNumber          = i_PlayerNumber;
            r_RegularCheckersMen    = new CheckersMen(i_RegularSign);
            r_KingCheckersMen       = new CheckersMen(i_KingSign);
            r_PossibleMoves         = new List <PlayerMove>(0);
            r_LastMovesPlayed       = new List <PlayerMove>(0);
            r_RandomNumberGenerator = new Random();
            m_CanEatAgain           = false;
            r_BaseLineRowKey        = i_BaseLineRowKey;
            m_AmountOfMenOnBoard    = i_m_AmountOfMenOnBoard;
            m_Score                 = 0;

            if (i_RegularSign == CheckersMen.eSign.O)
            {
                r_Direction = new Direction(1, -1, 1, -1);
            }
            else
            {
                r_Direction = new Direction(-1, 1, -1, 1);
            }
        }
Exemplo n.º 3
0
        private void enableSlotButtonsByCheckersMen(CheckersMen?i_RegularCheckersMen, CheckersMen?i_KingCheckersMen)
        {
            CheckersMen regularCheckersMen;
            CheckersMen kingCheckerMen;

            if (i_RegularCheckersMen == null || i_KingCheckersMen == null)
            {
                getFromSlotButtonCheckersMen(out regularCheckersMen, out kingCheckerMen);
            }
            else
            {
                regularCheckersMen = i_RegularCheckersMen.Value;
                kingCheckerMen     = i_KingCheckersMen.Value;
            }

            foreach (KeyValuePair <string, SlotButton> keyValuePair in m_Board)
            {
                SlotButton slotButton = keyValuePair.Value;

                if (slotButton.Content != null)
                {
                    CheckersMen.eSign slotButtonContent = slotButton.Content.Value.Sign;
                    bool enableButton = slotButtonContent == regularCheckersMen.Sign ||
                                        slotButtonContent == kingCheckerMen.Sign;

                    slotButton.Enabled = enableButton;
                }
                else if (!slotButton.Name.Equals("null"))
                {
                    slotButton.Enabled = true;
                }
            }
        }
        public int GetAmountOfCheckersMen(CheckersMen.eSign i_CheckerMenSign)
        {
            int amountOfCheckersMen = 0;

            foreach (KeyValuePair <string, BoardSlot> slot in r_Board)
            {
                if (!slot.Value.isEmpty())
                {
                    CheckersMen.eSign slotContent = slot.Value.Content.Value.Sign;
                    if (slotContent == i_CheckerMenSign)
                    {
                        amountOfCheckersMen++;
                    }
                }
            }

            return(amountOfCheckersMen);
        }
        public void GetUserMove(
            string i_TurnPlayerName,
            CheckersMen.eSign i_TurnPlayerMenSign,
            out string o_FromSlotKey,
            out string o_ToSlotKey,
            out bool o_Quit)
        {
            o_Quit        = false;
            o_FromSlotKey = "";
            o_ToSlotKey   = "";
            string inputLable = string.Format("{0}'s Turn ({1}):", i_TurnPlayerName, i_TurnPlayerMenSign.ToString());
            bool   legalInput = false;

            while (!legalInput)
            {
                string inputUserMove = getUserInput(inputLable);
                legalInput = isInputUserMoveLegal(inputUserMove);
                if (legalInput)
                {
                    if (isQuitCode(inputUserMove))
                    {
                        o_Quit = true;
                    }
                    else
                    {
                        string[] slotKeys = inputUserMove.Split('>');
                        o_FromSlotKey = slotKeys[0];
                        o_ToSlotKey   = slotKeys[1];
                    }
                }
                else
                {
                    Console.WriteLine(
                        @"Illegal Input,   
Legal Input Pattern: fromIndex>toIndex Or 'Q' to quit");
                }
            }
        }