diff --git a/Include/PrintFrames.h b/Include/PrintFrames.h new file mode 100644 index 0000000..7ec0063 --- /dev/null +++ b/Include/PrintFrames.h @@ -0,0 +1,18 @@ +#ifndef PRINTFRAMES_H +#define PRINTFRAMES_H + +#include + +using namespace std; + +class PrintFrames { + public: + PrintFrames(); + + ~PrintFrames(); + + static void PrintHeader(vector rolls); + static void PrintValue(vector rolls); +}; + +#endif \ No newline at end of file diff --git a/rolls.txt b/rolls.txt index ef0a92e..09eb4d3 100644 --- a/rolls.txt +++ b/rolls.txt @@ -1,3 +1,4 @@ -2, 3, 5, 4, 9, 1, 2, 5, 3, 2, 4, 2, 3, 3, 4, 6, 10, 3, 2 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 +10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 1 +2, 3, 5, 4, 9, 1, 2, 5, 3, 2, 4, 2, 3, 3, 4, 6, 10, 3, 2 diff --git a/src/PrintFrames.cpp b/src/PrintFrames.cpp new file mode 100644 index 0000000..aa13eab --- /dev/null +++ b/src/PrintFrames.cpp @@ -0,0 +1,119 @@ +#include "../Include/PrintFrames.h" +#include + +PrintFrames::PrintFrames() {}; +PrintFrames::~PrintFrames() {}; + +void PrintFrames::PrintHeader(vector rolls){ + int frame = 0; + int i = 1; + + while (true) { + cout << "|"; + + // Strike + if (rolls[frame] == 10) { + // If we're on our last frame, and roll a 10. + if (frame + 3 == rolls.size() && rolls[frame - 3] == 10) { + cout << " f" << i << " |" << endl; + break; + } + + cout << " f" << i << " "; + + frame += 1; + } + + // Spare + else if (rolls[frame] + rolls[frame + 1] == 10) { + if (frame + 3 == rolls.size() && rolls[frame] + rolls[frame + 1] == 10) + { + cout << " f" << i << " |" << endl; + break; + } + + cout << " f" << i << " "; + + frame += 2; + } + + // Open Frame + else { + cout << " f" << i << " "; + frame += 2; + } + + ++i; + + if (frame == rolls.size()) { + cout << "|" << endl; + break; + } + } +} + +void PrintFrames::PrintValue(vector rolls){ + int frame = 0; + + while (true) { + cout << "|"; + + // Strike + if (rolls[frame] == 10) { + // If we're on our last frame, and roll a 10. + if (frame + 3 == rolls.size() && rolls[frame - 3] == 10) { + if (rolls[frame + 1] == 10 && rolls[frame + 2] == 10) { + cout << "X, X, X|" << endl; + } + else if (rolls[frame + 1] == 0 && rolls[frame + 2] == 0) { + cout << "X, -, -|" << endl; + } + else if (rolls[frame + 1] == 0) { + cout << "X, -, " << rolls[frame + 2] << "|" << endl; + } + else if (rolls[frame + 2] == 0) { + cout << "X, " << rolls[frame + 1] << ", -|" << endl; + } + else { + cout << "X, " << rolls[frame + 1] << ", " << rolls[frame + 2] << "|" << endl; + } + + break; + } + + cout << "X "; + + frame += 1; + } + + // Spare + else if (rolls[frame] + rolls[frame + 1] == 10) { + if (frame + 3 == rolls.size() && rolls[frame] + rolls[frame + 1] == 10) + { + cout << rolls[frame] << ", /" << ", " << rolls[frame + 1] << "|" << endl; + break; + } + + cout << rolls[frame] << ", /"; + + frame += 2; + } + + // Open Frame + else { + if (rolls[frame] == 0) { + cout << "-" << ", " << rolls[frame + 1]; + } + else if (rolls[frame + 1] == 0) { + cout << rolls[frame] << ", -"; + } + cout << "" << rolls[frame] << ", " << rolls[frame + 1]; + frame += 2; + } + + if (frame == rolls.size()) { + cout << " |" << endl; + break; + } + } +} \ No newline at end of file diff --git a/src/ScoreCalculator.cpp b/src/ScoreCalculator.cpp index bdff0ee..19daa97 100644 --- a/src/ScoreCalculator.cpp +++ b/src/ScoreCalculator.cpp @@ -4,11 +4,11 @@ ScoreCalculator::ScoreCalculator() {}; ScoreCalculator::~ScoreCalculator() {}; int ScoreCalculator::GetScore(vector rolls) { - // Calculate score int score = 0; int frame = 0; while (true) { + // Strike if (rolls[frame] == 10) { // If we're on our last frame, and roll a 10. if (frame + 3 == rolls.size() && rolls[frame - 3] == 10) { diff --git a/src/main.cpp b/src/main.cpp index 3cca3c7..3073120 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,6 +4,7 @@ #include "../Include/FileHelper.h" #include "../Include/NumberHelper.h" #include "../Include/ScoreCalculator.h" +#include "../Include/PrintFrames.h" using namespace std; @@ -19,14 +20,13 @@ int main(int argc, char *argv[]) { } string file = FileReader::GetFile(argv[1]); - vector rolls = NumberHelper::GetNumbers(file); + PrintFrames::PrintHeader(rolls); + PrintFrames::PrintValue(rolls); + int score = ScoreCalculator::GetScore(rolls); - - - - cout << "Score: " << score << std::endl; + cout << "Score: " << score << endl; return 0; }