2 #ifndef PROGRESS_EXPERIMENTAL_NEW_PROGRESS_H 
    3 #define PROGRESS_EXPERIMENTAL_NEW_PROGRESS_H 
   65         template <Player Owner>
 
   68         template <Player Attack>        
 
   73         static void progressOne(
const NumEffectState &state,
 
   74                                 int &attack, 
int &defense);
 
   84           const int x_diff = std::abs(king.
x() - target.
x()); 
 
   85           const int y_diff = (P == 
BLACK ? king.
y() - target.
y() :
 
   86                               target.
y() - king.
y()) + 2; 
 
   87           return x_diff * 5 + y_diff;
 
   92           int target_x = (king.
x() > 5 ? 10 - king.
x() : king.
x()); 
 
   93           int x_diff = king.
x() - target.
x(); 
 
   94           if (P == 
BLACK && king.
x() >= 6)
 
   98           else if (P == 
WHITE && king.
x() >= 5)
 
  102           const int y_diff = (P == 
BLACK ? king.
y() - target.
y() :
 
  103                               target.
y() - king.
y()) + 2; 
 
  104           return ((x_diff + 4) * 5 + y_diff) * 5 + target_x - 1;
 
  109           const int x_diff = std::abs(king.
x() - target.
x()); 
 
  110           const int y_diff = (P == 
BLACK ? king.
y() - target.
y() :
 
  111                               target.
y() - king.
y()) + 2; 
 
  112           const int king_y = (P == 
BLACK ? king.
y() : 10 - king.
y()); 
 
  113           return (x_diff * 5 + y_diff) * 9 + king_y - 1;
 
  118           assert(0 <= promoted && promoted <= 4);
 
  119           return promoted + 5 * (silver + 5 * (gold + 5 * (bishop + 3 * 
rook)));
 
  124           assert(0 <= promoted && promoted <= 4);
 
  126             5 * (promoted + 5 * (silver + 5 * (gold + 5 * (bishop + 3 * 
rook))));
 
  131           assert(0 <= promoted && promoted <= 4);
 
  133             9 * (promoted + 5 * (silver + 5 * (gold + 5 * (bishop + 3 * 
rook))));
 
  139           const int x_diff = std::abs(king.
x() - target.
x()); 
 
  140           const int y_diff = (P == 
BLACK ? king.
y() - target.
y() :
 
  141                               target.
y() - king.
y()) + 2; 
 
  142           return x_diff * 5 + y_diff + 
std::min(8, count) * 25;
 
  149           const int king_y = (P == 
BLACK ? king.
y() : 10 - king.
y());
 
  150           const int x_diff = std::abs(king.
x() - target.
x()); 
 
  151           const int y_diff = (P == 
BLACK ? king.
y() - target.
y() :
 
  152                               target.
y() - king.
y()) + 2; 
 
  153           return king_y - 1 + 9 * (x_diff * 5 + y_diff + 
std::min(8, count) * 25);
 
  159           const int king_x = (king.
x() > 5 ? 10 - king.
x() : king.
x());
 
  160           int x_diff = king.
x() - target.
x(); 
 
  161           if ((P == 
BLACK && (king.
x() > 5)) ||
 
  162               (P == 
WHITE && (king.
x() >= 5)))
 
  164           const int y_diff = (P == 
BLACK ? king.
y() - target.
y() :
 
  165                               target.
y() - king.
y()) + 2; 
 
  166           return king_x - 1 + 5 * (x_diff + 4 +
 
  167                                    9 * (y_diff + 5 *  
std::min(8, count)));
 
  173           const int x = std::abs(pos.
x() - king.
x());
 
  174           const int y = (king.
y() - pos.
y()) *
 
  183             return indexRelative<BLACK>(king, piece.
ptype(),
 
  188             return indexRelative<WHITE>(king, piece.
ptype(),
 
  214         void updateSub(
const NumEffectState &new_state, 
Move last_move);
 
  215         void update(
const NumEffectState &new_state, 
Move last_move){
 
  216           if(new_state.turn()==
BLACK)
 
  217             updateSub<WHITE>(new_state,last_move);
 
  219             updateSub<BLACK>(new_state,last_move);
 
  277         static bool setUp(
const char *filename);
 
  282       bool operator==(
const NewProgressData& l, 
const NewProgressData& r);
 
  288     using ml::NewProgress;
 
  290   using progress::NewProgress;
 
  293 #endif // PROGRESS_EXPERIMENTAL_NEW_PROGRESS_H