//TODO: Check if multiple booleans are the correct way. Also check efficiency of the while loop. public bool GenerateComputerMove(eBoardSigns i_ComputerSign) { bool succeededGeneratingMove = false; bool keepTrying = true; int generatedRow; int generatedColumn; Random rand = new Random(); if (CheckIfBoardFilled()) { keepTrying = false; } do { generatedColumn = rand.Next(0, m_GameBoard.MatrixSideSize); generatedRow = rand.Next(0, m_GameBoard.MatrixSideSize); if (m_GameBoard.MarkCell(i_ComputerSign, generatedColumn, generatedRow)) { succeededGeneratingMove = true; keepTrying = false; } }while(keepTrying); return(succeededGeneratingMove); }
private bool checkForSequenceInDiagonals(eBoardSigns i_MarkedSign) { bool foundSequence = true; for (int i = 1; i <= m_GameBoard.MatrixSideSize; i++) // Check main diagonal. { if (m_GameBoard.GetBoard()[i, i] != i_MarkedSign) { foundSequence = false; break; } } if (!foundSequence) // Check secondary diagonal. { int cellIndex = m_GameBoard.MatrixSideSize - 1; for (int i = 0; i < m_GameBoard.MatrixSideSize; i++) { if (m_GameBoard.GetBoard()[i, cellIndex--] != i_MarkedSign) { foundSequence = false; break; } } } return(foundSequence); }
public static eBoardSigns GetOpositeSign(eBoardSigns i_Sign) { eBoardSigns opositeSign = eBoardSigns.Player1Sign; if (i_Sign == eBoardSigns.Player1Sign) { opositeSign = eBoardSigns.Player2Sign; } return(opositeSign); }
private bool checkForSequenceInColumn(int i_ColumnChosen, eBoardSigns i_MarkedSign) { bool result = true; for (int i = 0; i < m_GameBoard.MatrixSideSize; i++) { if (m_GameBoard.GetBoard()[i, i_ColumnChosen] != i_MarkedSign) { result = false; break; } } return(result); }
public bool MarkCell(eBoardSigns i_Sign, int i_NumColumns, int i_NumRows) { bool res = false; if (m_Board[i_NumColumns, i_NumRows].Equals(eBoardSigns.Blank)) { this.m_Board[i_NumColumns, i_NumRows] = i_Sign; res = true; m_NumberOfBlankCells--; } return(res); /*if (i_Sign == 'O' || i_Sign == 'X') * { * this.m_Board[i_NumColumns, i_NumRows] = i_Sign; * } * else * { * throw new Exception("Illegal sign entered."); * }*/ }
public bool CheckForWinner(int i_ColumnChosen, int i_RowChosen, eBoardSigns i_MarkedSign) { return(checkForSequenceInColumn(i_ColumnChosen, i_MarkedSign) || checkForSequenceInRow(i_RowChosen, i_MarkedSign) || checkForSequenceInDiagonals(i_MarkedSign)); }