diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..fed6709 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,23 @@ +name: Build C++ + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + install: + runs-on: ubuntu-latest + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y -f build-essential g++ cmake + build: + needs: install + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build project + run: g++ GameDie.cpp -std=c++17 -Wall -Werror diff --git a/GameDie.cpp b/GameDie.cpp index d512405..4995e3e 100644 --- a/GameDie.cpp +++ b/GameDie.cpp @@ -6,27 +6,27 @@ //class constructor that seeds the random number generator GameDie::GameDie() { - srand(time(NULL)); - counter.resize(FACES); + srand(time(NULL)); + counter.resize(FACES); - for(int i=0; i GameDie::get_distribution(){ - return counter; + return counter; +} + +//returns percentage of rolls for each face relative to the number of total rolls +vector GameDie::get_percentages() { + vector rolls; + rolls = get_distribution(); + vector res; + int total = 0; + + for(int i = 0; i < rolls.size(); i++) { + total += rolls[i]; + } + + res.resize(rolls.size()); + + for(int i = 0; i < res.size(); i++) { + res[i] = (double)rolls[i]/(double)total; + } } diff --git a/GameDie.h b/GameDie.h index 54d69ba..e5bec0b 100644 --- a/GameDie.h +++ b/GameDie.h @@ -11,6 +11,7 @@ class GameDie GameDie(unsigned int); int roll(); vector get_distribution(); + vector get_percentages(); private: vector counter; diff --git a/README.md b/README.md index 9a8fe2c..b652a03 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # GameDie +[![Build C++](https://github.com/mcbillings/GameDie/actions/workflows/build.yml/badge.svg)](https://github.com/mcbillings/GameDie/actions/workflows/build.yml) + + This repository provides a class that represents a game die, such as the six-sided dice used in traditional dice game. While the die defaults to six sides, the overloaded constructor allows the developer to customize @@ -23,4 +26,4 @@ Once built, run the image: ...or run it with a bind mount to the current source code: -`docker run --mount type=bind,source="$(pwd)",target=/usr/src -it cpp-container` \ No newline at end of file +`docker run --mount type=bind,source="$(pwd)",target=/usr/src -it cpp-container`