#include "../include/PrintFrames.h" #include #include void PrintFrames::printHeader() { cout << "| f1 | f2 | f3 | f4 | f5 | f6 | f7 | f8 | f9 | f10 |" << endl; } void PrintFrames::printValue(string value) { cout << value; } string PrintFrames::parseValue(vector frames) { stringstream ss; // There can only be 10 frames. for (int i = 0; i < 10; i++) { ss << "|"; // Strike if (frames[i].Roll[0] == 10) { if (frames[i].Roll.size() == 3) { ss << "X, "; if (frames[i].Roll[1] == 10 && frames[i].Roll[2] == 10) { ss << "X, X"; } else if (frames[i].Roll[1] != 10 && frames[i].Roll[2] == 10) { ss << frames[i].Roll[1] << ", X "; } else if (frames[i].Roll[1] == 10 && frames[i].Roll[2] != 10) { ss << "X, " << frames[i].Roll[2] << " "; } else if (frames[i].Roll[1] == 10 && frames[i].Roll[2] == 0) { ss << frames[i].Roll[1] << ", - "; } else if (frames[i].Roll[1] == 0 && frames[i].Roll[2] == 10) { ss << "-, " << frames[i].Roll[2] << " "; } else if (frames[i].Roll[1] != 10 && frames[i].Roll[2] == 0) { ss << frames[i].Roll[1] << ", - "; } else if (frames[i].Roll[1] == 0 && frames[i].Roll[2] != 10) { ss << "-, " << frames[i].Roll[2] << " "; } continue; } // If the next frame has 3 or 2 rolls, then take those 2. if (frames[i + 1].Roll.size() > 1) { if (frames[i + 1].Roll[0] == 10 && frames[i + 1].Roll[1] != 10) { ss << "X, " << frames[i + 1].Roll[0] << " "; } else if (frames[i + 1].Roll[0] != 10 && frames[i + 1].Roll[1] == 10) { ss << frames[i + 1].Roll[1] << ", X"; } else { if (frames[i + 1].Roll[0] + frames[i + 1].Roll[1] == 10) { ss << "X, " << frames[i + 1].Roll[0] << ", /"; } else if (frames[i + 1].Roll[0] == 0 && frames[i + 1].Roll[1] != 0) { ss << "X, " << "-, " << frames[i + 1].Roll[1]; } else if (frames[i + 1].Roll[0] != 0 && frames[i + 1].Roll[1] == 0) { ss << "X, " << frames[i + 1].Roll[0] << ", -"; } else { ss << "X, "; } } continue; } // Both next frames, that are not the last, are 10. ss << "X "; continue; } // Spare if (frames[i].Roll[0] + frames[i].Roll[1] == 10) { if (frames[i].Roll.size() == 3) { if (frames[i].Roll[0] == 0 && frames[i].Roll[1] != 10 && frames[i].Roll[2] != 10) { if (frames[i].Roll[2] == 0) { ss << "-, /, -"; } else { ss << "-, " << frames[i].Roll[1] << frames[i].Roll[2]; } } else if (frames[i].Roll[0] == 0 && frames[i].Roll[1] == 10 && frames[i].Roll[2] != 10) { if (frames[i].Roll[2] == 0) { ss << "-, /, -"; } else { ss << "-, /, " << frames[i].Roll[2]; } } else if (frames[i].Roll[0] == 0 && frames[i].Roll[1] == 10 && frames[i].Roll[2] == 10) { ss << "-, /, X"; } else { ss << frames[i].Roll[0] << ", /, " << frames[i].Roll[2]; } continue; } ss << frames[i].Roll[0] << ", /"; continue; } // Open frame if (i == 9) { ss << frames[i].Roll[0] << ", " << frames[i].Roll[1] << " "; } else { if (frames[i].Roll[0] == 0 && frames[i].Roll[1] == 0) { ss << "-, -"; } else if (frames[i].Roll[0] == 0 && frames[i].Roll[1] != 0) { ss << "-, " << frames[i].Roll[1]; } else if (frames[i].Roll[0] != 0 && frames[i].Roll[1] == 0) { ss << frames[i].Roll[0] << ", -"; } else { ss << frames[i].Roll[0] << ", " << frames[i].Roll[1]; } } } ss << "|"; ss << endl; return ss.str(); }