public static void Main()
bool userCancelled = false;
Console.WriteLine("Roll the dice...");
Console.WriteLine("How many dice would you like to roll? You may select at least one, but no more than five.");
var dc = Console.ReadLine();
if(!int.TryParse(dc, out diecount)){
Console.WriteLine("Please enter a valid number of dice.");
Console.WriteLine("You must roll at least one die.");
Console.WriteLine("You can only roll up to 5 dice.");
var diceSides = new int[diecount];
for(int i = 0; i < diecount; i++){
string tempDiceSides = "";
Console.WriteLine($"How many sides does die {i + 1} have?");
tempDiceSides = Console.ReadLine();
if(!int.TryParse(tempDiceSides, out diceSides[i])){
Console.WriteLine("Please enter a valid number.");
Console.WriteLine("Dice must have at least 3 sides.");
else if(diceSides[i] > 50){
Console.WriteLine("Dice can have at most 20 sides.");
var rolledValues = new int[diecount];
for(int i = 0; i < diecount; i++){
rolledValues[i] = GetRandomNumber(1, diceSides[i] + 1);
total += rolledValues[i];
Console.WriteLine($"You rolled: {string.Join(", ", rolledValues)}");
Console.WriteLine($"Total: {total}");
string response = Console.ReadLine();
if (response.ToUpper() == "N"){
private static int GetRandomNumber(int min, int max){