D&D角色统计辊(Java)

时间:2019-02-27 10:07:59

标签: java project dice

因此,我对Java语言非常陌生,我试图将各种骰子组合在一起以生成D&D(地下城与龙)的角色统计信息。

我想要程序执行的操作是滚动x D6的数量x次数。 X由用户输入。我还需要程序询问是否要在D6滚动上重新滚动结果1。另外,该程序只能保留最多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 :(得分:0)

具有用户输入的一类解决方案如下所示:

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);
    }
}