Giter Club home page Giter Club logo

gamedie's Introduction

GameDie

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 any size die (with at least one face). It also keeps track of how many times a certain face has been rolled so that the fairness of the die can be examined.

Getting Started

Build the image from Dockerfile with the command:

docker build -t cpp-container .

Once built, run the image:

docker run -it cpp-container

...or run it interactively in a shell:

docker run -it cpp-container sh

...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

gamedie's People

Contributors

kbuffardi avatar

Watchers

 avatar  avatar  avatar

gamedie's Issues

Overload constructor for alternate-sized die

Create an overloaded constructor GameDie::GameDie(unsigned int) so that die can be created with any positive number of faces.

If the parameter passed is zero, default to six faced die.

Otherwise, allow a die that has as many faces as provided as a parameter.

Set up Continuous Integration that builds the project

The continuous integration should run when (and only when) there is a new commit into the main branch.

It should build the project using g++ to compile GameDie.cpp with the options -Wall -Werror to report warnings as errors. It should build but not run the project.

With the build CI set up, its status badge should be added to the README.md file

Add feature to report distribution as percentages

get_distribution() keeps a tally of how many times each face has been rolled, but some users are reporting that they want this same information as a percentage of total rolls.

Add a public member function vector<double> GameDie::get_percentages() that returns the percentage of rolls for each face relative to the number of total rolls. Each percentage should be a double between 0 and 1 inclusively. For example, if we have a 4-sided die that has rolled each face 1 time and has the get_distribution() of:
{1,1,1,1}
then the get_percentages() function should return:
{0.25,0.25,0.25,0.25}

If there are no rolls yet, percentages should report 0 for each face in the vector. Otherwise, the percentage should be calculated by face rolls / total rolls.

Create member function get_distribution

Create a public member function GameDie::get_distribution() that returns a vector <int> that represents the number of rolls for each face of the die.

A die is typically labelled from 1...n but vectors are zero-indexed, so it should return a vector from 0...n-1 where each cell represents the count of rolls at the face, minus one. For example, on a four-sided die where there has been one roll of the face value 4, get_distribution() should return the vector {0,0,0,1}. However, those indices are at locations [0], [1], [2], and [3].

If there have been no rolls yet, each cell should have the count 0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.