+
+ for (int x = 0; x < BOARD_WIDTH; ++x)
+ {
+ for (int y = 0; y < BOARD_HEIGHT; ++y)
+ {
+ Square & s = board.SquareAt(x,y);
+
+ if (s.piece != NULL && s.piece.colour == colour)
+ continue;
+
+ map<Piece*, double> m = board.SquareAt(x,y).Coverage(colour);
+
+ for (map<Piece*, double>::iterator i = m.begin(); i != m.end(); ++i)
+ {
+ moves[i->first].push_back(pair<Square*, double>
+ }
+ }
+ }
+
+ for (map<Piece*, vector<pair<Square*, double> > >::iterator i = moves.begin(); i < moves.end()
+