【问题标题】:D&D Character stat roller (Java)D&D 角色统计滚轮 (Java)
【发布时间】:2019-07-21 00:31:56
【问题描述】:

所以我对 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);
}
}

【问题讨论】:

  • 提示:使用 for 循环

标签: java project dice


【解决方案1】:

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

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

【讨论】:

  • 感谢您的帮助。但是,它必须只保留掷出的骰子的最高 3 个数字。比如单次滚动4个D6,如果结果是4,3,5,2;程序只能保留 5,4,3 共 12 个。
猜你喜欢
  • 2020-10-21
  • 1970-01-01
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2014-12-31
  • 2013-05-07
相关资源
最近更新 更多