Esempio n. 1
0
        // 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;
        }
Esempio n. 2
0
        // 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;
        }