//method avoids repeating code in ReportMill method private bool MillLogic(Mill[] mills, Mill mill) { bool millAlreadyExist = false; //controles if the mill already exists for (int i = 0; i < 4; i++) { if (mills[i] != null) { if (Mill.Equal(mills[i], mill)) { millAlreadyExist = true; break; } } } //if not adds him to the array of mills and returns true for detecting a mill if (!millAlreadyExist) { for (int k = 0; k < 4; k++) { if (mills[k] == null) { mills[k] = mill; break; } } return(true); } return(false); }
public static bool Equal(Mill mill1, Mill mill2) { if ((mill1.black == mill2.black) && (mill1.Stone1.Item1 == mill2.Stone1.Item1) && (mill1.Stone1.Item2 == mill2.Stone1.Item2) && (mill1.Stone2.Item1 == mill2.Stone2.Item1) && (mill1.Stone2.Item2 == mill2.Stone2.Item2) && (mill1.Stone3.Item1 == mill2.Stone3.Item1) && (mill1.Stone3.Item2 == mill2.Stone3.Item2)) { return(true); } return(false); }
private bool ReportMill(int j, int a, int b, int c, PlaceOnBoardIs[,] board, Mill[] whiteMills, Mill[] blackMills) { if ((board[a, j] == PlaceOnBoardIs.whiteOccupied) && (board[b, j] == PlaceOnBoardIs.whiteOccupied) && (board[c, j] == PlaceOnBoardIs.whiteOccupied)) { //creates the mill always Mill mill = new Mill(a, j, b, j, c, j, false); if (MillLogic(whiteMills, mill)) { return(true); } } else if ((board[a, j] == PlaceOnBoardIs.blackOccupied) && (board[b, j] == PlaceOnBoardIs.blackOccupied) && (board[c, j] == PlaceOnBoardIs.blackOccupied)) { Mill mill = new Mill(a, j, b, j, c, j, true); if (MillLogic(blackMills, mill)) { return(true); } } if ((board[j, a] == PlaceOnBoardIs.whiteOccupied) && (board[j, b] == PlaceOnBoardIs.whiteOccupied) && (board[j, c] == PlaceOnBoardIs.whiteOccupied)) { Mill mill = new Mill(j, a, j, b, j, c, false); if (MillLogic(whiteMills, mill)) { return(true); } } else if ((board[j, a] == PlaceOnBoardIs.blackOccupied) && (board[j, b] == PlaceOnBoardIs.blackOccupied) && (board[j, c] == PlaceOnBoardIs.blackOccupied)) { Mill mill = new Mill(j, a, j, b, j, c, true); if (MillLogic(blackMills, mill)) { return(true); } } return(false); }