Beispiel #1
0
static void free_tiles(tmx_tile *t) {
	if (t) {
		free_tiles(t->next);
		free_props(t->properties);
		free_image(t->image);
		tmx_free_func(t);
	}
}
Beispiel #2
0
static void free_ts(tmx_tileset *ts) {
	if (ts) {
		free_ts(ts->next);
		tmx_free_func(ts->name);
		free_image(ts->image);
		free_props(ts->properties);
		free_tiles(ts->tiles);
		tmx_free_func(ts);
	}
}
Beispiel #3
0
static void free_tiles(tmx_tile *t) {
	if (t) {
		free_tiles(t->next);
		free_props(t->properties);
		free_image(t->image);
		free_obj(t->collision);
		tmx_free_func(t->animation);
		tmx_free_func(t);
	}
}
Beispiel #4
0
double min_possibility(int* board) {
    int modifier[] = {
            // Top left corner
            15, 14, 13, 12,
            8, 9, 10, 11,
            7, 6, 5, 4,
            0, 1, 2, 3
    };

    int sub = 15 - max_tile(board);

    int min_possibility = INT_MAX;

    int sum = 0;

    for (int i = 0; i < 16; i++) {

        if (modifier[i] - sub >= 0) {
            modifier[i] = sub - modifier[i];
        }

        if (board[i] == 0) {
            modifier[i] = 0;
        } else {
            modifier[i] =
                    (modifier[i] + board[i]) * (16 - modifier[i]) * board[i] * board[i];
        }

        sum = sum + abs(modifier[i]);
    }

    if (sum < min_possibility) {
        min_possibility = sum;
    }

    return (-(float)min_possibility) + ((float)free_tiles(board) * (float)free_tiles(board) * (float)free_tiles(board) * 5.15);
}
Beispiel #5
0
double evaluation_function(int* board) {
    if (is_impossible(board)) {
        return INT_MIN;
    }

    if(heuristic == 1) {
        return min_possibility(board);
    }
    return (
            (smoothness(board) * smoothness_constant) +
            (max_tile(board) * max_tile_constant) +
            (log(free_tiles(board)) * free_tiles_constant) +
            (max_placement(board) * max_placement_constant) +
            (monotonicity(board) * monotonicity_constant)
    );
}