public class MostTactics implements Tactics{
	private Othello othello;
	public MostTactics(Othello othello){
		this.othello = othello;
	}
	public int where(Kyokumen k){
		int ableplace[] = new int[64];
		int cnt = 0;
		for(int i = 0;i < 8;i++){
			for(int j = 0;j < 8;j++){
				if(k.masuPlaceCheck(i,j,k.getTurn())){
					ableplace[cnt] = i * 10 + j;
					cnt++;
				}
			}
		}
		if(cnt == 0){
			return -1;
		}else{
			int max_cnt = 0;
			int max_point[] = new int[64];
			max_point[0] = -1;
			int max_point_cnt = 1;
			for(int i = 0;i < cnt;i++){
				int x = ableplace[i] / 10;
				int y = ableplace[i] % 10;
				int henkan_cnt = henkanTest(k,x,y,k.getTurn());
				if(henkan_cnt >= max_cnt){
					if(henkan_cnt > max_cnt){
						max_cnt = henkan_cnt;
						max_point_cnt = 0;
					}
					max_point[max_point_cnt] = ableplace[i];
					max_point_cnt++;
				}
			}
			return max_point[(int)(Math.random()* max_point_cnt)];
		}
	}
	public int henkanTest(Kyokumen kyokumen,int i,int j,int turn){
		int cnt = 0;
		for(int k = 0;k < 9;k++){
			if(k != 4){
				int dx = k / 3 - 1;
				int dy = k % 3 - 1;
				int [] check = kyokumen.placeAbleCheck(i,j,dx,dy,turn);
				if(check[0] == 1){
					int x = check[1] / 10;
					int y = check[1] % 10;
					while(x != i || y != j){
						cnt++;
						x = x - dx;
						y = y - dy;
					}
				}
			}
		}
		return cnt;
	}
}