Пример #1
0
 public void GetPossibleMoves(Board i_gameBoard)
 {
     m_ListPossibleMoves.Clear();
     for (int row = 0; row < i_gameBoard.Size; row++)
     {
         bool isUpFlip, isDownFlip, isLeftFlip, isRightFlip, isUpRightFlip, isUpLeftFlip, isDownLeftFlip, isDownRightFlip;
         for (int col = 0; col < i_gameBoard.Size; col++)
         {
             i_gameBoard.GameBoard[row, col].m_CellsToFlip.Clear();
             if (i_gameBoard.GameBoard[row, col].IsCellEmpty)
             {
                     isUpFlip = GenericCheck(m_MyColor, m_OpponentColor, row, col, i_gameBoard, "up");
                     isLeftFlip = GenericCheck(m_MyColor, m_OpponentColor, row, col, i_gameBoard, "left");
                     isRightFlip = GenericCheck(m_MyColor, m_OpponentColor, row, col, i_gameBoard, "right");
                     isDownFlip = GenericCheck(m_MyColor, m_OpponentColor, row, col, i_gameBoard, "down");
                     isUpRightFlip = GenericCheck(m_MyColor, m_OpponentColor, row, col, i_gameBoard, "upright");
                     isUpLeftFlip = GenericCheck(m_MyColor, m_OpponentColor, row, col, i_gameBoard, "upleft");
                     isDownLeftFlip = GenericCheck(m_MyColor, m_OpponentColor, row, col, i_gameBoard, "downleft");
                     isDownRightFlip = GenericCheck(m_MyColor, m_OpponentColor, row, col, i_gameBoard, "downright");
                 if (isUpFlip || isDownFlip || isLeftFlip || isRightFlip || isUpRightFlip || isUpLeftFlip || isDownLeftFlip || isDownRightFlip)
                 {
                     m_ListPossibleMoves.Add(new Coordinates(row, col));
                 }
             }
         }
     }
 }
Пример #2
0
 public GameLogic(int i_BoardSize, bool i_isComputerPlayer)
 {
     m_boardSize = i_BoardSize;
     m_gameBoard = new Board(m_boardSize);
     m_isAgainstComputer = i_isComputerPlayer;
     GetPlayers();
     m_CurrentPlayer = m_Player1;
     m_OponentPlayer = m_Player2;
 }
Пример #3
0
        private bool GenericCheck(eButtonColor i_MySymbol, eButtonColor i_OpponentSymbol, int i_row, int i_col, Board i_gameBoard, string i_direction)
        {
            bool isSeenOtherPlayer = false;
            bool isSeenSelfAndLegal = false;
            int deltaPositionRow = i_row;
            int deltaPositionCol = i_col;
            int addCellToFlipCounter = 0;
            incrementDelta(ref deltaPositionRow, ref deltaPositionCol, i_direction);

            while ((deltaPositionRow >= 0) && (deltaPositionRow < i_gameBoard.Size) && (deltaPositionCol >= 0)
                && (deltaPositionCol < i_gameBoard.Size))
            {
                if (i_gameBoard.GameBoard[deltaPositionRow, deltaPositionCol].IsCellEmpty )
                {
                    break;
                }

                if (i_gameBoard.GameBoard[deltaPositionRow, deltaPositionCol].Color == i_MySymbol && !isSeenOtherPlayer)
                {
                    break;
                }

                if (i_gameBoard.GameBoard[deltaPositionRow, deltaPositionCol].Color == i_OpponentSymbol)
                {
                    isSeenOtherPlayer = true;
                }

                if (i_gameBoard.GameBoard[deltaPositionRow, deltaPositionCol].Color == i_MySymbol && isSeenOtherPlayer)
                {
                    isSeenSelfAndLegal = true;
                    break;
                }

                if (isSeenOtherPlayer && !isSeenSelfAndLegal)
                {
                    addCellToFlip(i_gameBoard, i_row, i_col, deltaPositionRow, deltaPositionCol);
                    addCellToFlipCounter++;
                }

                incrementDelta(ref deltaPositionRow, ref deltaPositionCol, i_direction);
            }

            if (!isSeenSelfAndLegal)
            {
                int indexToRemove = i_gameBoard.GameBoard[i_row, i_col].m_CellsToFlip.Count - addCellToFlipCounter;
                i_gameBoard.GameBoard[i_row, i_col].m_CellsToFlip.RemoveRange(indexToRemove, addCellToFlipCounter);
            }

            return isSeenSelfAndLegal;
        }
Пример #4
0
 private void addCellToFlip(Board i_gameBoard, int i_Therow, int i_Thecol, int i_RowToBeFlipped, int i_ColToBeFlipped)
 {
     Coordinates CellToFlip = new Coordinates(i_RowToBeFlipped, i_ColToBeFlipped);
     i_gameBoard.GameBoard[i_Therow, i_Thecol].m_CellsToFlip.Add(CellToFlip);
 }
Пример #5
0
        public void CountMySymbol(Board i_gameBoard)
        {
            int countSymbol = 0;
            for (int row = 0; row < i_gameBoard.Size; row++)
            {
                for(int col = 0; col < i_gameBoard.Size; col++)
                {
                    if (i_gameBoard.GameBoard[row, col].Color == r_PlayerColor)
                    {
                        countSymbol++;
                    }
                }
            }

            Score = countSymbol;
        }
Пример #6
0
 internal void CalculatePossibleMoves(Board i_gameBoard)
 {
     m_MypossibleMoves.GetPossibleMoves(i_gameBoard);
 }