private static bool checkerBelongsToTheRightTeam(eUserTurn i_CurrentTurn, eCheckerType?sourceChecker)
        {
            bool answer = true;

            if (sourceChecker == null)
            {
                answer = false;
            }

            if (i_CurrentTurn == eUserTurn.User1)
            {
                if (sourceChecker == eCheckerType.Team2_King || sourceChecker == eCheckerType.Team2_Man)
                {
                    answer = false;
                }
            }
            else if (i_CurrentTurn == eUserTurn.User2)
            {
                if (sourceChecker == eCheckerType.Team1_King || sourceChecker == eCheckerType.Team1_Man)
                {
                    answer = false;
                }
            }

            return(answer);
        }
Exemplo n.º 2
0
 private void storePrevTurn(Position i_SourcePosition, Position i_TargetPosition, eUserTurn userTurn, char UserSign)
 {
     m_PrevUser = userTurn;
     m_PrevSourcePosition.m_Col = (int)i_SourcePosition.m_Col;
     m_PrevSourcePosition.m_Row = (int)i_SourcePosition.m_Row;
     m_PrevTargetPosition.m_Col = (int)i_TargetPosition.m_Col;
     m_PrevTargetPosition.m_Row = (int)i_TargetPosition.m_Row;
 }
        public char GetSignOfUser(eUserTurn i_User)
        {
            char answer;

            if (i_User == eUserTurn.User1)
            {
                answer = (char)eCheckerType.Team1_Man;
            }
            else
            {
                answer = (char)eCheckerType.Team2_Man;
            }

            return(answer);
        }
        public string GetNameOfPlayer(eUserTurn i_Player)
        {
            string nameOfPlayer;

            if (i_Player == eUserTurn.User1)
            {
                nameOfPlayer = m_PlayerOne.m_Name;
            }
            else
            {
                nameOfPlayer = m_PlayerTwo.m_Name;
            }

            return(nameOfPlayer);
        }
        public static Dictionary <Position, List <Position> > CalculatePosibleMoves(eUserTurn i_CurrentTurn, Board i_Board, out bool i_IsPossibleEat)
        {
            i_IsPossibleEat = false;

            Dictionary <Position, List <Position> > posibleMovesPerPosition = calculatePosibleEats(i_CurrentTurn, i_Board);

            foreach (Position key in posibleMovesPerPosition.Keys)
            {
                if (posibleMovesPerPosition[key].Count != 0)
                {
                    i_IsPossibleEat = true;
                    break;
                }
            }

            if (!i_IsPossibleEat)
            {
                posibleMovesPerPosition = new Dictionary <Position, List <Position> >();

                eCheckerType?[,] currentBoard = i_Board.GetBoard();
                eCheckerType?currentChecker;

                for (int row = 0; row < currentBoard.GetLength(0); row++)
                {
                    for (int col = 0; col < currentBoard.GetLength(1); col++)
                    {
                        currentChecker = currentBoard[row, col];

                        if (checkerBelongsToTheRightTeam(i_CurrentTurn, currentChecker))
                        {
                            List <Position> ListOfPosibleMoves = getPosibleMoves(row, col, i_CurrentTurn, currentBoard);
                            Position        currentPosition    = new Position(row, col);
                            if (ListOfPosibleMoves.Count > 0)
                            {
                                posibleMovesPerPosition.Add(currentPosition, ListOfPosibleMoves);
                            }
                        }
                    }
                }
            }

            return(posibleMovesPerPosition);
        }
        private static List <Position> getPosibleMoves(int row, int col, eUserTurn i_CurrentTurn, eCheckerType?[,] i_Board)
        {
            List <Position> posibleMoves = new List <Position>();

            eCheckerType currentChecker = (eCheckerType)i_Board[row, col];

            if (currentChecker == eCheckerType.Team1_Man || currentChecker == eCheckerType.Team1_King ||
                currentChecker == eCheckerType.Team2_King)
            {
                diagonallyUpLeft(row, col, i_Board, ref posibleMoves);
                diagonallyUpRight(row, col, i_Board, ref posibleMoves);
            }
            if (currentChecker == eCheckerType.Team2_Man || currentChecker == eCheckerType.Team2_King ||
                currentChecker == eCheckerType.Team1_King)
            {
                diagonallyDownLeft(row, col, i_Board, ref posibleMoves);
                diagonallyDownRight(row, col, i_Board, ref posibleMoves);
            }

            return(posibleMoves);
        }
        private static Dictionary <Position, List <Position> > calculatePosibleEats(eUserTurn i_CurrentTurn, Board i_Board)
        {
            Dictionary <Position, List <Position> > posibleMovesPerPosition = new Dictionary <Position, List <Position> >();

            eCheckerType?[,] currentBoard = i_Board.GetBoard();
            eCheckerType?currentChecker;

            for (int row = 0; row < currentBoard.GetLength(0); row++)
            {
                for (int col = 0; col < currentBoard.GetLength(1); col++)
                {
                    currentChecker = currentBoard[row, col];

                    if (checkerBelongsToTheRightTeam(i_CurrentTurn, currentChecker))
                    {
                        Position        currentPosition   = new Position(row, col);
                        List <Position> posibleMovesToEat = new List <Position>();

                        if (currentChecker == eCheckerType.Team1_Man || currentChecker == eCheckerType.Team1_King ||
                            currentChecker == eCheckerType.Team2_King)
                        {
                            upLeftEat(row, col, currentBoard, ref posibleMovesToEat);
                            upRightEat(row, col, currentBoard, ref posibleMovesToEat);
                        }
                        if (currentChecker == eCheckerType.Team2_Man || currentChecker == eCheckerType.Team2_King ||
                            currentChecker == eCheckerType.Team1_King)
                        {
                            downLeftEat(row, col, currentBoard, ref posibleMovesToEat);
                            downRightEat(row, col, currentBoard, ref posibleMovesToEat);
                        }
                        if (posibleMovesToEat.Count > 0)
                        {
                            posibleMovesPerPosition.Add(currentPosition, posibleMovesToEat);
                        }
                    }
                }
            }

            return(posibleMovesPerPosition);
        }