public int getValueByStatus(Bord bord, Pos setPos, Stone color, int cnt) {
		int retValue = 0;

		// 仮想ボードを作成する
		Bord vrBord = bord.clone();
		vrBord.DoSet(setPos, color, true);
		if (cnt < 0) {
			// 自分と相手の数から状態を取得する
			int myHand = vrBord.GetCount(getMyColor());
			int enHand = vrBord.GetCount(Stone.reverseStone(getMyColor()));

			int nawStatus = myHand - enHand;
			// NULLをセットして少しでも軽く
			vrBord = null;
			if (nawStatus > 0) {
				if (myHand > enHand * 1.5) {
					return MY_STATUS_VERY_GOOD;
				} else {
					return MY_STATUS_GOOD;
				}
			} else if (nawStatus < 0) {
				return My_STATUS_BAD;
			} else {
				return MY_STATUS_EQUAL;
			}

		} else {
			// 色を逆転して、次に相手が置ける位置を選択する
			ArrayList<Pos> nextHandList = vrBord.getCanSetList(Stone.reverseStone(color));
			for (Pos pos : nextHandList) {
				int nextCnt = cnt - 1;
				retValue += getValueByStatus(vrBord, pos, Stone.reverseStone(color), nextCnt);
			}

		}

		return retValue;
	}