ひっくり返す処理のロジックは難しいので、

今回は私が記述したプログラムを利用してください。


自信のある方はオリジナルのひっくり返す処理を書いてもいいと思いますし、

私の書いたロジックがどのように処理しているのかを考えてもいいかもしれません。

是非、いろいろな挑戦をしてみてください。

-----


int turnItem( int x, int y ){

int turnParamX[] = { -1, 0, 1, -1, 1, -1, 0, 1 };
int turnParamY[] = { -1, -1, -1, 0, 0, 1, 1, 1 };


int count = 0;

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

int tmpX = x + turnParamX[i];
int tmpY = y + turnParamY[i];


for( int j=0; tmpX >= 0 && tmpY >= 0 && tmpX < 8 && tmpY < 8; j++ ){


if( table[tmpX][tmpY] == -turn ){


tmpX += turnParamX[i];
tmpY += turnParamY[i];


}else{


if( table[tmpX][tmpY] == turn ){


tmpX -= turnParamX[i];
tmpY -= turnParamY[i];


while( tmpX != x || tmpY != y ){


table[tmpX][tmpY] = turn;
tmpX -= turnParamX[i];
tmpY -= turnParamY[i];
count++;


}
}

break;
}
}
}


if( count == 0 ){
return 1;

}


return 0;
}


-----