Ejemplo n.º 1
0
// Reduit de n pixels la hauteurs de l'image
void reduce(unsigned char **im1, int n, int &sizeX, int &sizeY) {
    for (int i=0; i<n; i++) {
        unsigned char * ime = new unsigned char [sizeX*sizeY];
        unsigned char * im2 = new unsigned char [sizeX*(sizeY-1)];
        IMgradient(*im1,ime,sizeX,sizeY);
        int seam[sizeX];
        min_path(ime, seam, sizeX, sizeY);
        del_seam(*im1,im2,seam,sizeX,sizeY);
        sizeY--;
        delete[] *im1;
        delete[] ime;
        *im1 = im2;
    }
}
Ejemplo n.º 2
0
// Reduit de n pixels la hauteurs de l'image avec un masque
void reduceS(unsigned char *im1, unsigned char *mask, int n, int sizeX, int &sizeY) {
    int seam[sizeX];
    unsigned char tmp[sizeX*sizeY];
    unsigned char tmp_mask[sizeX*sizeY];
    unsigned char ime[sizeX*sizeY];

    for (int i=0; i<n; i++) {
        IMgradient(im1,ime,sizeX,sizeY);
        min_path(ime, mask, seam, sizeX, sizeY);
        del_seam(im1,tmp,seam,sizeX,sizeY);
        del_seam(mask,tmp_mask,seam,sizeX,sizeY);
        sizeY--;
        for (int i=0; i<sizeY*sizeX; i++) {
            im1[i] = tmp[i];
            mask[i] = tmp_mask[i];
        }
    }
}
Ejemplo n.º 3
0
void go_computer()
{
	int i;
	int oldx = computer.x;
    int	oldy = computer.y;
	Location buf[6];

	if(is_boundary(computer))
		who_win(COMPUTER);

	if(is_inCircle(computer)) {
		i = max_cost(computer);
		inCircle = 1;
	}
	else 
		i = min_path(computer);

	switch(i) {
		case 0:
			computer.y--;
			break;
		case 1:
			if((computer.x % 2) == 0) {
				computer.x--;
				computer.y--;
			}
			else {
				computer.x--;
			}
			break;
		case 2:
			if((computer.x % 2) == 0) {
				computer.x--;				
			}
			else {
				computer.x--;
				computer.y++;
			}
			break;			
		case 3:
			computer.y++;
			break;
		case 4:
			if((computer.x % 2) == 0) {
				computer.x++;
			}
			else {
				computer.x++;
				computer.y++;
			}
			break;
		case 5:
			if((computer.x % 2) == 0) {
				computer.x++;
				computer.y--;
			}
			else {
				computer.x++;
			}
			break;
	} //end switch

	if((oldx % 2) == 0)
		move(oldx, oldy*2);
	else
		move(oldx, oldy*2+1);
	draw_one(WAY);
	map[oldx][oldy].type = WAY;

	if((computer.x % 2) == 0)
		move(computer.x, computer.y*2);
	else
		move(computer.x, computer.y*2+1);
	draw_one(CAT);
	map[computer.x][computer.y].type = CAT;
}