//myClasses/Dice.hpp
//Matthew Ellison
// Created: 1-26-19
//Modified: 1-26-19
//This is a simple class to simulate a dice for games
///This file has to be modified slightly to work with windows because the random_device does not work correctly
/*
Copyright (C) 2018 Matthew Ellison
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see .
*/
#ifndef DICE_HPP
#define DICE_HPP
#include
#include
//Use this for anything besides Linux. It replaces random_device
//I know this doesn't work correctly with mingw on Windows, not sure about msbuild or mac so I don't take the chance
#ifndef linux
#include
#endif //ifndef linux
namespace mee{
class Dice{
private:
uint64_t face; //Holds the currently rolled number
uint64_t sides; //Holds the number of sides the dice has
std::default_random_engine generator; //The number generator that all the numbers come from
std::uniform_int_distribution dist; //A distribution to make sure the numbers come out relatively evenly
public:
#ifdef linux
Dice(uint64_t sides = 6) : face(1), sides(sides), generator(std::random_device{}()), dist(1, sides) { }
#else
Dice(uint64_t sides = 6) : face(1), sides(sides), generator(time(0)), dist(1, sides) { }
#endif //ifdef linux
//Setup ways to get information from the class
uint64_t getFace() const { return face; }
uint64_t getSides() const { return sides; }
//Used to simulate rolling the dice. Returns the new number
uint64_t roll() {
face = dist(generator);
return face;
}
};
} //namespace mee
#endif //DICE_HPP