java - DnD 角色统计滚轮 (Java)

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

最佳答案

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

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

关于java - DnD 角色统计滚轮 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54902884/

相关文章:

java - 自定义 Spring Bean 参数

ruby - 项目骨架

java - 将 Android 项目转换为 Java 项目

java - 如何让我的百分比在我的 Dice 计划中发挥作用?

c - 两个骰子滚动模拟器

java - 正则表达式匹配逗号和句点,除非被数字包围

java - 子实体的外键在保存时未添加到父实体,一对一

java - java中的记录器相关问题

java - "Close unrelated projects"函数在 Eclipse 中消失

java - 如何在 Java 中正确使用 "throws clause"?