Поскольку вы новичок, я постараюсь сначала объяснить несколько вещей.
Если у вас есть несколько раз, вы должны сделать то же самое, вы никогда не должны обрабатывать каждый случай самостоятельно. Это означает, что вы не должны использовать if else if else .., а вместо этого используйте цикл вроде for или while.
Я написал короткую функцию, которая должна делать то, что вы хотите.
private int GetNumber(int amountDie) {
if (amountDie <= 0 || amountDie > 5) return 0;
int total = 0;
for (int i = 0; i < amountDie; i++)
{
int roll = rnd.Next(1, 7);
if (roll == 6)
{
int specialRoll1 = rnd.Next(1, 7);
int specialRoll2 = rnd.Next(1, 7);
total += specialRoll1;
total += specialRoll2;
}
else {
total += roll;
}
}
return total;
}
Теперь еще несколько объяснений:
Поскольку вы сказали, что у вас не может быть больше 5 кубиков, мы сначала проверим правильность заданного значения, в противном случае мы просто вернем 0 (в этом случае есть вещи получше, но для простоты мы просто скажем они возвращаются 0).
После этого мы объявляем общее количество, чтобы отследить, сколько очков мы должны вернуть.
Затем мы начинаем цикл. Для каждого кубика мы бросаем один раз (первая строка в for-construct).
Так как нам нужно проверить, бросил ли пользователь 6, у нас это есть, если есть. Внутри него мы бросаем два кубика и добавляем оба результата к итогу. Обратите внимание, что для этих двух бросков 6 аналогичен любому другому числу и не обрабатывается по-другому (если вам это нужно, это будет немного сложнее).
Если пользователь не бросил 6, мы просто добавляем все, что они бросили, к общему количеству.
После того, как мы сделали это для всех умирающих, мы просто возвращаем полученную сумму.
Вы увидите, что если вы просто скопируете и вставите этот код, он не скомпилируется. Причина этого в том, что вам не хватает Random-объекта. В своем коде вы всегда создавали новый при каждом переходе. Это проблема, поскольку класс Random не такой случайный, как вы могли бы подумать, и вы всегда должны создавать только один для многих случайных чисел.
Вот почему я добавил это в верхней части моего класса:
private static readonly Random rnd = new Random();
Этот случайный объект создается только один раз, а затем используется для каждого кубика. Это дает вам гораздо больше случайности и предотвращает, что каждый пользователь всегда бросает одно и то же значение.
Надеюсь, это покажет вам, как вы можете создать такой метод. Конечно, вы можете добавить консольный вывод и т. Д., Как вы сделали в своем коде.