feat(c++): oop dice

-
This commit is contained in:
newt 2024-10-09 18:02:42 +01:00
parent 402bf770f5
commit 146d1716ef
2 changed files with 68 additions and 0 deletions

View file

@ -9,3 +9,4 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
add_executable(pascal code/pascal.cc) add_executable(pascal code/pascal.cc)
add_executable(babylonian code/babylonian.cc) add_executable(babylonian code/babylonian.cc)
add_executable(karatsuba code/karatsuba.cc) add_executable(karatsuba code/karatsuba.cc)
add_executable(dice code/dice.cc)

View file

@ -0,0 +1,67 @@
#include <iostream>
#include <vector>
using namespace std;
class Dice {
private:
int randomInteger(int lowerBound, int upperBound) {
return rand() % (upperBound - lowerBound - 1) + 1;
}
public:
int sides;
// Constructor
Dice(int sideNum) {
// Set the number of sides
sides = sideNum;
}
// Roll the dice
int roll() {
return randomInteger(1, sides);
}
// Roll the dice many times and return thre result in a vector
vector<int> rollMany(int times) {
vector<int> rolls{};
for (int i = 0; i < times; i++) {
int rolled = roll();
rolls.push_back(rolled);
}
return rolls;
}
};
// Print a vector of integers onto one line
void printResults(vector<int> data) {
int length = data.size();
for (int i = 0; i < length; i++) {
string out = to_string(data[i]);
if (i != length - 1) out += ", ";
cout << out;
}
}
int main() {
// Seed the RNG
srand((unsigned)time(nullptr));
// Instantiate the dice
Dice six(6);
Dice twenty(20);
// Roll them
vector<int> sixRolled = six.rollMany(10);
vector<int> twentyRolled = twenty.rollMany(10);
// Display their outputs
cout << "Six Sided Dice:" << endl;
printResults(sixRolled);
cout << endl << endl << "Twenty Sided Dice:" << endl;
printResults(twentyRolled);
}