Esempio n. 1
0
/* ---- 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";
}