// Heuristic function to valuate the Board private int Valuate(GomokuBoard b, Selected_cell cell, char flag ) { int result = 0; Point pos; Point[] direction = { new Point(0, -1), new Point(0, 1), new Point(1, 0), new Point(-1, 0), new Point(1, 1), new Point (-1, -1), new Point (1, -1), new Point(-1, 1)}; foreach (Point P in direction) { int countSimilar = 0; pos = cell.P; pos.X += P.X; pos.Y += P.Y; while (b.Board[pos.X, pos.Y].IsSelected == true && b.Board[pos.X, pos.Y].Flag == flag) { result++; countSimilar++; if (countSimilar == 5) { return 1000; } } } return result; }
// Return the list of available cell private List<Selected_cell> Available_cell(GomokuBoard b) { List<Selected_cell> result = new List<Selected_cell>(); // TODO: Change into get cells in the radius of 3 cells from lastPos Point lastPos = this.board.Last_Selected_Position; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (b.Board [i, j].IsSelected == false) { Selected_cell cell = new Selected_cell (); Point p = new Point (); p.X = j; p.Y = i; cell.P = p; result.Add (cell); } } } return result; }