private int[,] generateArray(eSizeBoard i_SizeOfBoard)
        {
            int sizeOfBoardInteger = (int)i_SizeOfBoard;

            int[,] returnedArr = new int[sizeOfBoardInteger, sizeOfBoardInteger];
            int maxScore = sizeOfBoardInteger / 2;

            for (int i = 0; i < sizeOfBoardInteger / 2; i++)
            {
                for (int j = i; j < sizeOfBoardInteger; j += 2)
                {
                    returnedArr[i, j]     = 0;
                    returnedArr[i, j + 1] = maxScore;
                    returnedArr[j, i]     = 0;
                    returnedArr[j + 1, i] = maxScore;
                    returnedArr[sizeOfBoardInteger - 1, j]     = maxScore;
                    returnedArr[sizeOfBoardInteger - 1, j + 1] = 0;
                    returnedArr[j, sizeOfBoardInteger - 1]     = maxScore;
                    returnedArr[j + 1, sizeOfBoardInteger - 1] = 0;
                }

                maxScore--;
                sizeOfBoardInteger--;
            }

            return(returnedArr);
        }
        public void generateSoliders(eNumberOfPlayer i_NumberOfPlayer, eSizeBoard i_BoardSize)
        {
            Soldiers.Clear();
            int  numberOfRows         = ((int)i_BoardSize / 2) - 1;
            int  numberOfPlayersInRow = (int)i_BoardSize / 2;
            char startRowForNumberOfPlayer;
            char representSoldier;

            switch (i_NumberOfPlayer)
            {
            case eNumberOfPlayer.First:
            {
                startRowForNumberOfPlayer = MovementOptions.k_StartRow;
                representSoldier          = Soldier.k_FirstPlayerRegular;
                generateSolidersForPlayer(numberOfRows, numberOfPlayersInRow, startRowForNumberOfPlayer, representSoldier);
                break;
            }

            case eNumberOfPlayer.Second:
            {
                representSoldier          = Soldier.k_SecondPlayerRegular;
                startRowForNumberOfPlayer = (char)(MovementOptions.k_StartRow + ((int)i_BoardSize / 2) + 1);
                generateSolidersForPlayer(numberOfRows, numberOfPlayersInRow, startRowForNumberOfPlayer, representSoldier);
                break;
            }
            }
        }
        private SquareMove generateSquareToMoveHuman(Player i_CurrentPlayer, eSizeBoard i_SizeOfBoard, List <SquareMove> i_AvaiableVaildMoves, List <SquareMove> i_MustToDoMoves)
        {
            SquareMove moveFromClient = null;
            bool       isValidMove    = false;

            while (!isValidMove)
            {
                moveFromClient = UIUtilities.getValidSquareToMoveFromClient(i_CurrentPlayer, i_SizeOfBoard);
                if (moveFromClient == null)
                {
                    break;
                }

                if (i_MustToDoMoves.Count > 0)
                {
                    isValidMove = i_MustToDoMoves.Contains(moveFromClient);
                }
                else
                {
                    isValidMove = i_AvaiableVaildMoves.Contains(moveFromClient);
                }
            }

            return(moveFromClient);
        }
Example #4
0
 public void initializeCheckerBoard(string i_FirstPlayerName, string i_SecondPlayerName, eSizeBoard i_SizeOfBoard)
 {
     m_CurrentPlayer = new Player(i_FirstPlayerName, eTypeOfPlayer.Human, eNumberOfPlayer.First, i_SizeOfBoard);
     m_SizeOfBoard   = i_SizeOfBoard;
     if (i_SecondPlayerName == null)
     {
         m_OtherPlayer = new Player(Player.k_computerName, eTypeOfPlayer.Computer, eNumberOfPlayer.Second, i_SizeOfBoard);
     }
     else
     {
         m_OtherPlayer = new Player(i_SecondPlayerName, eTypeOfPlayer.Human, eNumberOfPlayer.Second, i_SizeOfBoard);
     }
     m_MovmentOption = new MovementOptions(m_SizeOfBoard);
 }
        private static bool validRange(eSizeBoard i_SizeOfBoard, char startRange, params char[] arrayToCheck)
        {
            bool validRows = true;

            foreach (char currentChar in arrayToCheck)
            {
                if (currentChar < startRange || currentChar > (char)(startRange + i_SizeOfBoard - 1))
                {
                    validRows = false;
                }
            }

            return(validRows);
        }
Example #6
0
        public CheckerBoard(CheckerBoard i_CloneToThisBoard)
        {
            Player otherFirstPlayer  = i_CloneToThisBoard.m_CurrentPlayer;
            Player otherSecondPlayer = i_CloneToThisBoard.m_OtherPlayer;

            m_CurrentPlayer = new Player(i_CloneToThisBoard.CurrentPlayer.PlayerName, otherFirstPlayer.TypeOfPlayer, otherFirstPlayer.NumberOfPlayer, i_CloneToThisBoard.m_SizeOfBoard);
            m_OtherPlayer   = new Player(otherSecondPlayer.PlayerName, otherSecondPlayer.TypeOfPlayer, otherSecondPlayer.NumberOfPlayer, i_CloneToThisBoard.m_SizeOfBoard);
            m_SizeOfBoard   = i_CloneToThisBoard.m_SizeOfBoard;
            m_GameStatus    = i_CloneToThisBoard.m_GameStatus;
            m_MovmentOption = i_CloneToThisBoard.m_MovmentOption;
            if (i_CloneToThisBoard.m_SoliderThatNeedToEatNextTurn != null)
            {
                m_SoliderThatNeedToEatNextTurn = new Soldier(i_CloneToThisBoard.m_SoliderThatNeedToEatNextTurn.CharRepresent, i_CloneToThisBoard.m_SoliderThatNeedToEatNextTurn.PlaceOnBoard, i_CloneToThisBoard.m_SoliderThatNeedToEatNextTurn.TypeOfSoldier);
            }
            m_CurrentPlayer.Soldiers = addSoldiers(m_CurrentPlayer.Soldiers);
            m_OtherPlayer.Soldiers   = addSoldiers(m_OtherPlayer.Soldiers);
        }
Example #7
0
        public static SquareMove getValidSquareToMoveFromClient(Player i_Player, eSizeBoard i_SizeOfBoard)
        {
            String     moveFromClientS;
            SquareMove moveFromClient = null;

            Console.WriteLine(i_Player.PlayerName + "'s turn:");
            do
            {
                moveFromClientS = Console.ReadLine();
                if (moveFromClientS.Equals("Q"))
                {
                    moveFromClient = null;
                    break;
                }
            }while (!SquareMove.Parse(moveFromClientS, out moveFromClient, i_SizeOfBoard));

            return(moveFromClient);
        }
Example #8
0
        private SquareMove generateSquareToMoveHuman(Player i_CurrentPlayer, eSizeBoard i_SizeOfBoard, List <SquareMove> i_AvaiableVaildMoves, List <SquareMove> i_MustToDoMoves, SquareMove i_SquareToMove)
        {
            SquareMove moveFromClient = null;
            bool       isValidMove    = false;

            if (i_MustToDoMoves.Count > 0)
            {
                isValidMove = i_MustToDoMoves.Contains(i_SquareToMove);
            }
            else
            {
                isValidMove = i_AvaiableVaildMoves.Contains(i_SquareToMove);
            }
            if (isValidMove)
            {
                moveFromClient = i_SquareToMove;
            }
            return(moveFromClient);
        }
        private void initializeStartCheckerBoard()
        {
            String     firstPlayerName, secondPlayerName;
            eSizeBoard sizeOfBoard;

            UIUtilities.getClientNamesAndTypeOfSecondPlayer(out firstPlayerName, out secondPlayerName, out sizeOfBoard);
            m_CurrentPlayer = new Player(firstPlayerName, eTypeOfPlayer.Human, eNumberOfPlayer.First, sizeOfBoard);
            m_SizeOfBoard   = sizeOfBoard;
            if (secondPlayerName == null)
            {
                m_OtherPlayer = new Player(Player.k_computerName, eTypeOfPlayer.Computer, eNumberOfPlayer.Second, sizeOfBoard);
            }
            else
            {
                m_OtherPlayer = new Player(secondPlayerName, eTypeOfPlayer.Human, eNumberOfPlayer.Second, sizeOfBoard);
            }

            m_MovmentOption = new MovementOptions(m_SizeOfBoard);
        }
 public BoardSquareScore(eSizeBoard i_SizeOfBoard)
 {
     m_ArrayOfScore = generateArray(i_SizeOfBoard);
 }
Example #11
0
        public static void getClientNamesAndTypeOfSecondPlayer(out String o_FirstPlayerName, out String o_SecondPlayerName, out eSizeBoard o_SizeOfBoard)
        {
            Console.WriteLine("Wellcome to the checker game\nDesigned and developed by Nadav Shalev & Ben Magriso\n");
            Console.WriteLine("Enter Your name and press enter");
            o_FirstPlayerName  = getValidName();
            o_SizeOfBoard      = getSizeBoardFromClient();
            o_SecondPlayerName = null;
            eTypeOfPlayer choiseTypeOfPlayer = getTypeOfPlayerFromClient();

            if (choiseTypeOfPlayer == eTypeOfPlayer.Human)
            {
                Console.WriteLine("Enter the second name player and press enter");
                o_SecondPlayerName = getValidName();
            }
        }
 public Player(String i_PlayerName, eTypeOfPlayer i_TypeOfPlayer, eNumberOfPlayer i_NumberOfPlayer, eSizeBoard i_BoardSize)
 {
     m_Score        = 0;
     PlayerName     = i_PlayerName;
     TypeOfPlayer   = i_TypeOfPlayer;
     NumberOfPlayer = i_NumberOfPlayer;
     Soldiers       = new List <Soldier>();
     generateSoliders(i_NumberOfPlayer, i_BoardSize);
 }
Example #13
0
 public MovementOptions(eSizeBoard i_SizeOfBoard)
 {
     r_EndCol = (char)(k_StartCol + i_SizeOfBoard - 1);
     r_EndRow = (char)(k_StartRow + i_SizeOfBoard - 1);
 }
 public IAChecker(eSizeBoard i_SizeOfBoard)
 {
     m_ScoresOfBoard = new BoardSquareScore(i_SizeOfBoard);
 }
        public static bool Parse(string i_MoveFromClientS, out SquareMove o_SquareMove, eSizeBoard i_SizeOfBoard)
        {
            o_SquareMove = new SquareMove();
            bool isValidInput = true;

            char[] arrayofChars = i_MoveFromClientS.ToCharArray();
            if (i_MoveFromClientS.Length != 5 || arrayofChars[2] != '>')
            {
                isValidInput = false;
            }
            else if (!validRange(i_SizeOfBoard, MovementOptions.k_StartCol, arrayofChars[0], arrayofChars[3]))
            {
                isValidInput = false;
            }
            else if (!validRange(i_SizeOfBoard, MovementOptions.k_StartRow, arrayofChars[1], arrayofChars[4]))
            {
                isValidInput = false;
            }

            if (isValidInput)
            {
                o_SquareMove.FromSquare = new Square(arrayofChars[1], arrayofChars[0]);
                o_SquareMove.ToSquare   = new Square(arrayofChars[4], arrayofChars[3]);
            }

            return(isValidInput);
        }