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)); } } } } }
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; }
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; }
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); }
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; }
internal void CalculatePossibleMoves(Board i_gameBoard) { m_MypossibleMoves.GetPossibleMoves(i_gameBoard); }