From 7e1d8cd9612b7a4689848ba215980a6795c55b32 Mon Sep 17 00:00:00 2001 From: Barry Kane Date: Wed, 7 Dec 2022 11:07:19 +0000 Subject: [PATCH] Added a basic dice roller. I built a basic dice roller because I needed one. I want to add a few more features later on, though. --- roll.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 roll.c diff --git a/roll.c b/roll.c new file mode 100644 index 0000000..d2fcb99 --- /dev/null +++ b/roll.c @@ -0,0 +1,52 @@ +// roll.c: A command line dice roller. +#include +#include +#include +#include +#include + +typedef struct roll +{ + unsigned diceSides; + unsigned numberOfDice; +} roll; + +roll parseRollString(char * rollString) +{ + char * numberString, * sidesString, * currentPointer; + currentPointer = rollString; + numberString = strtok_r(rollString, "dD", ¤tPointer); + sidesString = strtok_r(NULL, "dD", ¤tPointer); + roll roll; + roll.numberOfDice = (unsigned)atoi(numberString); + roll.diceSides = (unsigned)atoi(sidesString); + return roll; +} + +int rollDice(roll roll) +{ + int rolledValue = 0; + for(unsigned rolls = 0; rolls < roll.numberOfDice; rolls++) + { + rolledValue += (rand() % roll.diceSides) + 1; + } + return rolledValue; +} + +int main(int argc, char ** argv) +{ + srand((unsigned)time(NULL) * getpid()); + roll roll; + if(argc < 1) + { + roll = parseRollString(argv[1]); + } + else + { + roll.diceSides = 20; + roll.numberOfDice = 1; + } + int result = rollDice(roll); + printf("You rolled a: %d\n", result); + return result; +}