D & D Персонаж стат ролик (Java) - PullRequest
0 голосов
/ 27 февраля 2019

Итак, я очень плохо знаком с языком Java и пытаюсь собрать своего рода ролик для игры в кости для генерации статистики персонажей для D & D (Dungeons and Dragons).

Я хочу, чтобы программа делала бросок х число D6, х количество раз.X должен быть введен пользователем.Мне также нужна программа, чтобы спросить, нужно ли перебрасывать результат 1 на бросок D6.Кроме того, программа должна сохранять только самые высокие 3 числа выпавших кубиков.Затем он должен выводить результаты каждой группировки бросков костей, а не суммировать их все вместе.

Так что пример: я хочу, чтобы 4 D6 бросили 6 раз, и перебрасывали 1.Вывод программы будет примерно таким:

Ваши результаты:

10
12
13
15
17
11.

Я пытаюсь написать это с 3 классами, хотя я знаю, что это не нужноесть 3 класса для работы.Дополнительные классы являются более требовательными с точки зрения проекта.Мне удалось написать то, что необходимо, чтобы бросить одну кость, но, как я уже сказал, я очень новичок и почти не знаю, куда идти с этим.Пока у меня есть код:

//Scanner is implemented in preparation for user input as more coding is 
//added
import java.util.Scanner;
public class RollDie {

public static void main(String[] args) {
    int SIDES = 6;   // how many sides on the die?

    // roll should be 1 through SIDES
    int roll = (int) (Math.random() * SIDES) + 1;

    // print result
    System.out.println(roll);
}
}

1 Ответ

0 голосов
/ 27 февраля 2019

Решение для одного класса с дружественным пользовательским вводом может выглядеть следующим образом:

private final static int SIDES = 6;

public static void main(String[] args) {

    java.util.Scanner scanner = new java.util.Scanner (System.in);

    System.out.println("Number of dice?");
    final int dice = scanner.nextInt();
    System.out.println("Number of rolls?");
    final int rolls = scanner.nextInt();
    System.out.println("Reroll result 1? Enter y for yes");
    final boolean reroll = scanner.next().equals("y");

    for (int r = 0; r < rolls; r++) {
        int allDice = 0;
        for (int d = 0; d < dice; d++) {
            int roll = (int) (Math.random() * SIDES) + 1;
            while (reroll && roll == 1) {
                roll = (int) (Math.random() * SIDES) + 1;
            }
            allDice += roll;
        }
        System.out.println(allDice);
    }
}
...