Beispiel #1
0
std::auto_ptr<Geometry> difference( const Geometry& ga, const Geometry& gb )
{
    GeometrySet<2> gsa( ga ), gsb( gb ), output;
    algorithm::difference( gsa, gsb, output );

    return output.recompose();
}
Beispiel #2
0
	std::auto_ptr<Geometry> intersection( const Geometry& ga, const Geometry& gb )
	{
		GeometrySet<2> gsa( ga ), gsb( gb ), output;
		algorithm::intersection( gsa, gsb, output );

		GeometrySet<2> filtered;
		output.filterCovered( filtered );
		return filtered.recompose();
	}
Beispiel #3
0
    // genmove
    GTPResponse genmove(int stone_colour, bool verbose = false) {

        if (stone_colour == s.getNextToPlay()) {
             time_t start = time(NULL);

            GoMove move = GoMove::none();

            std::string ai_type = args.get("ai", "");

            int time_left = (stone_colour == BLACK) ? black_time_left : white_time_left;

            if (ai_type == "simulate") {
                RNG rng;
                PatternMatcher p;
                GoStateAnalyser gsa(s, rng, p);
                move = gsa.selectMoveForSimulation_Mogo<true>();
            } else {
                move = ai_interface.selectMove(time_left, verbose);
                std::cerr << "Performing update (tree cull after move play)\n";
                ai_interface.notifyPlayHasBeenMade(move);
            }
            if (!move.isResign()) {
                s.makeMove(move);
            }

            time_t end = time(NULL);
            time_left -= (end - start); // estimate time used in case we don't have time_left
            if (time_left < 0) {
                time_left = 0;
            }

            std::cerr << "Spent approx " << (end - start) << " secs thinking\n";
            (stone_colour == BLACK ? black_time_left : white_time_left) = time_left;

            std::cerr << boardToString(s) << "\n";

            return GTPResponse(GTP_SUCCESS, moveToString(move));

        } else {
            return GTPResponse(GTP_FAILURE, "Consecutive moves of the same color are not supported.");
        }
    }
Beispiel #4
0
 GoMove selectMove(GoState &s, RNG &rng) {
     GoStateAnalyser gsa(s, rng, pattern_matcher);
     GoMove move = gsa.selectMoveForSimulation();
     return move;
 }