/* ---- void HexGameIO::PrintBoard(HexBoard &board); -------------------------- Prints board ---------------------------------------------------------------------------- */ void HexGameIO::PrintBoard(HexBoard &board) { int size = board.Size(); char sMargin[] = " "; // ----- print column labels ---------------------------------------------- std::cout << sMargin; for (int i = 0; i < (3 + 1); i++) std::cout << " "; int padding = (size * 3 - 9) / 2; for (int i = 0; i < padding; i++) std::cout << " "; std::cout << name(HEXBLUE) << " GOAL" << "\n"; std::cout << sMargin; for (int i = 0; i < (3 + 1); i++) std::cout << " "; for (int i = 0; i < size; i++) std::cout << " " << i << " "; std::cout << "\n"; // ----- print top border ------------------------------------------------- std::cout << sMargin; for (int i = 0; i < (3 + 1); i++) std::cout << " "; for (int i = 0; i < (2 + 3 * size + 1); i++) std::cout << "-"; std::cout << "\n"; // ----- row labels, lateral borders and cells ---------------------------- for (int row = 0; row < size; row++) { if (row == (size/2 - 1)) std::cout << " " << name(HEXRED); else if (row == (size/2)) std::cout << "HOME"; else if (row == (size/2 + 1)) std::cout << " (" << chip(HEXRED) << ")"; else std::cout << sMargin; for (int s = 0; s < row; s++) std::cout << " "; std::cout << ((row < 10) ? " " : " ") << row << " " << "\\ "; for (int col = 0; col < size; col++) std::cout << " " << chip(board.GetColor(row, col)) << " "; std::cout << " \\ " << row << " "; if (row == (size/2 - 1)) std::cout << name(HEXRED); else if (row == (size/2)) std::cout << "GOAL"; std::cout << "\n"; } // ----- print bottom border ---------------------------------------------- std::cout << sMargin; for (int i = 0; i < (size + 3 + 1); i++) std::cout << " "; for (int i = 0; i < (2 + 3 * size + 1); i++) std::cout << "-"; std::cout << "\n"; // ----- print column labels ---------------------------------------------- std::cout << sMargin; for (int i = 0; i < (size + 3 + 1 + 2); i++) std::cout << " "; for (int i = 0; i < size; i++) std::cout << " " << i << " "; std::cout << "\n"; for (int i = 0; i < (size + 3 + 1 + 2); i++) std::cout << " "; for (int i = 0; i < padding; i++) std::cout << " "; std::cout << name(HEXBLUE) << " HOME (" << chip(HEXBLUE) <<")\n\n"; }