Streamline implementation of Position::pretty()
authorMarco Costalba <mcostalba@gmail.com>
Mon, 21 Apr 2014 09:42:08 +0000 (11:42 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 21 Apr 2014 09:47:01 +0000 (11:47 +0200)
Simpler and more in line with Bitboards::pretty()

No functional change.

src/position.cpp

index 57c4bc32cb1611da5bd0b5c8183abd28960232cc..7b345fd9c9c731515a46490fe1768d3687f134b6 100644 (file)
@@ -435,25 +435,23 @@ const string Position::fen() const {
 
 const string Position::pretty(Move m) const {
 
-  const string dottedLine =            "\n+---+---+---+---+---+---+---+---+";
-  const string twoRows =  dottedLine + "\n|   | . |   | . |   | . |   | . |"
-                        + dottedLine + "\n| . |   | . |   | . |   | . |   |";
-
-  string brd = twoRows + twoRows + twoRows + twoRows + dottedLine;
-
-  for (Bitboard b = pieces(); b; )
-  {
-      Square s = pop_lsb(&b);
-      brd[513 - 68 * rank_of(s) + 4 * file_of(s)] = PieceToChar[piece_on(s)];
-  }
-
   std::ostringstream ss;
 
   if (m)
       ss << "\nMove: " << (sideToMove == BLACK ? ".." : "")
          << move_to_san(*const_cast<Position*>(this), m);
 
-  ss << brd << "\nFen: " << fen() << "\nKey: " << std::hex << std::uppercase
+  ss << "\n +---+---+---+---+---+---+---+---+\n";
+
+  for (Rank r = RANK_8; r >= RANK_1; --r)
+  {
+      for (File f = FILE_A; f <= FILE_H; ++f)
+          ss << " | " << PieceToChar[piece_on(make_square(f, r))];
+
+      ss << " |\n +---+---+---+---+---+---+---+---+\n";
+  }
+
+  ss << "\nFen: " << fen() << "\nKey: " << std::hex << std::uppercase
      << std::setfill('0') << std::setw(16) << st->key << "\nCheckers: ";
 
   for (Bitboard b = checkers(); b; )