我正在尝试制作一个掷骰子应用程序。它可以掷出特定数量的骰子。有没有办法添加这些值?
Posted
技术标签:
【中文标题】我正在尝试制作一个掷骰子应用程序。它可以掷出特定数量的骰子。有没有办法添加这些值?【英文标题】:I'm trying to make a dice throwing app. It can throw specific number of dices. Is there a way to add these values? 【发布时间】:2021-04-25 04:28:11 【问题描述】:您能帮我找到添加这些值的方法吗?我正在尝试制作一个掷骰子来玩龙与地下城。感谢您的帮助!
System.out.println("What kind of dice?");
int diceType = userInput.nextInt();
System.out.println("How much?");
int diceNumber = userInput.nextInt();
int i = 1;
while ( i <=diceNumber)
System.out.println("Value: "
+ getRandomInteger(diceType, 1));
i++;
【问题讨论】:
Java 和 javascript 是完全不同的语言 你可以......在循环外定义一个变量,将其初始化为零,然后在循环内添加它。您可以使用a = a + diceValue
之类的表达式,或等效的a += diceValue
。
如何命名一个随机整数?现在它们只是随机整数,所以我不能将它添加到变量中
创建一个变量int sum = 0;
(在循环外),然后添加随机值。您可以使用Random#nextInt(diceType) + 1
获取从 1 到 diceType 的随机值。
请记住,诸如 dice.getDie1() 之类的函数调用表示一个值,因此可以在任何可以使用文字数字或变量的地方使用它。不需要将函数返回的值分配给变量。可以直接使用。
【参考方案1】:
问题 #1:为模具创建数据结构。
这个骰子对象应该至少存储边数和当前面值。您可以隐含地假设每一边都有一个从 1 到 NUM_SIDES 的唯一值。您可以创建具有不同面数的骰子,或者您可以改变相同的骰子集合以改变 NUM_SIDES 的值。无论如何,面值仍将在 1 到 NUM_SIDES 之间。
public class Die
private int currentValue;
private int numberOfSides;
public int getCurrentValue() return currentValue;
public int roll() currentValue = getRandomInteger();
问题 #2:掷骰子
首先,将骰子存储到骰子数组中(或其他允许重复的集合)。你的 die 对象应该有一个 roll()
函数来改变当前值。你的getRandomInteger()
应该被这个方法调用,这个调用的结果应该存储在currentValue
字段中。
问题 #3:添加值
遍历 die 数组并添加获取它们的当前值。这意味着您的 Die
类应该有一个 getCurrentValue()
方法。累积骰子的总和。
需要考虑的事项
-
所有死都应该有相同的面数吗?我认为这一点都不重要。事实上,我认为您可以对像 Yahtzee 这样的游戏使用相同的实现,其中骰子的面数相同,或者 AD&D 的骰子面数不同。
重播规则。在像 Yahtzee 这样的游戏中,你并不总是滚动整个集合。您需要考虑一种策略,用户可以选择一些骰子进行重新掷骰。我不记得这是否适用于 AD&D,但如果是,您需要考虑如何区分每个骰子并部分累积每个掷骰的当前值。
随机化。对于更现实的随机化,请考虑将seeding your randomizer 与当前时间类似。此外,您需要 set your boundaries for the possible roll values 介于 1 和 NUM_SIDES(含)之间。
设置边数。假设边数可以改变,您需要添加一个 setter 方法来设置边数。您还需要通过构造函数传递此参数,以便在实例化骰子对象时将骰子设置为某个有效数字。
【讨论】:
以上是关于我正在尝试制作一个掷骰子应用程序。它可以掷出特定数量的骰子。有没有办法添加这些值?的主要内容,如果未能解决你的问题,请参考以下文章