当前位置: 首页 > 知识库问答 >
问题:

创建龙与地下城骰子滚轮

宰父智敏
2023-03-14

我的任务是创建一个龙与地下城骰子滚动程序,其中四个骰子滚动,最高的三个数字被记录下来,最低的数字被放到一边。

该程序需要使用面向对象编程,这就是我遇到问题的地方。

此外,不能使用嵌套的If语句或循环。

我试图找出如何将每个类彼此分开编码。

我需要一个将运行程序本身的类,一个询问使用程序的人他们想要掷多少组骰子的类,一个实际表示掷骰子集的类,一个表示掷骰子系列的类(这是显示骰子1掷出的骰子,掷出的骰子2, 等),最后是一个类来处理单个骰子的滚动。

我知道输出需要显示每组掷骰子

输出需要如下所示:

Set 1: 11, 12, 3, 1
Set 2: 12, 3, 1, 4

等等。

此外,当我试图创建这个程序时,最让我失望的是,我被要求在没有嵌套if语句或循环的情况下创建它。

共有2个答案

鄢开诚
2023-03-14

如果您绝对需要使用您描述的四个类,这里有一个解决方案:

注意:避免循环的两种方法是:a)在n次中键入代码(如果常量迭代很少),b)使用递归方法代替。

主要:

  • 询问用户套数
  • 使用递归方法重复printSet()n次

SetCreator:

    < li >实例化一个SeriesRoller < li >对int[]进行排序,并按照您的描述对其进行格式化 < li>getSet()返回字符串

系列滚筒:

    < li >实例化di roller < li >使用递归方法滚动骰子多次 < li>getSeries()返回int[]

压辊:

  • 实例化随机
  • getRoll()返回从1到6的数字
南宫炜
2023-03-14

这个问题的解决方案应该能够使用两个类来完成:你的主类和一个骰子类。

您的主类应具有 main(){},该代码将包含提示用户输入并打印掷骰子的代码。

您的Dice类中可能只需要两个方法,这将是一个构造函数和一个用于die值的getter。

创建骰子时,骰子构造函数可以将骰子对象的掷骰值设置为1到6之间的一个随机数(假设您使用D6进行DnD掷骰)。这将使您不必调用另一个方法来实际“掷骰子”。

然后,您可以使用< code>main()中的roll值getter来获取roll值。这个getter只需要返回卷的值。

您的Dice类需要一个成员变量来保存为新骰子生成的随机值——我建议使用< code>int,因为您只需要整数。

在您的< code>main(){}中,您可以使用扫描仪获取用户输入的骰子点数。基于他们的输入,您可以使用for循环,根据用户的输入检查条件。(例如< code > for(int I = 0;我

在此循环中,您可以在循环的每次迭代中创建四个骰子对象。这将有效地为您提供四个“滚动”,因为每个骰子都用一个随机数实例化。

假设您为“Dice”类中保存骰子值的成员变量命名为roll,您可以通过点符号访问骰子的值,如< code>dice1.roll()这也可以用于您的输出,而不需要将返回值赋给另一个变量。

最后,要检查哪一卷最低,可以使用一系列if-else语句检查哪一张最低。我建议使用如下条件

如果(骰子1.滚()

然后,您可以使用else检查dice2是否是最低的,使用else if检查dice3,使用else if检查dice4。

在sudo代码中,您的主类可能如下所示

\\main

\\declare a scanner
\\declare int for user input

\\output: How many dice would you like to roll
\\input user input var is assigned the value of user input


\\for loop checking if i < userInput
   \\Create new dice object dice1
   \\Create new dice object dice2
   \\Create new dice object dice3
   \\Create new dice object dice4

   \\check if dice1 is lowest
       \\print out die rolls, totals, and lowest roll
   \\else if check dice2 is lowest
       \\print out die rolls, totals, and lowest roll
   \\else if check dice3 is lowest
       \\print out die rolls, totals, and lowest roll
   \\else if check dice4 is lowest
       \\print out die rolls, totals, and lowest roll

\\end for loop this loop will iterate how ever many times the user input
    \\each loop will create 4 dice objects with random D6 values
    \\essentially give you 4 "rolls" for each iteration of the loop

这个主类没有嵌套循环或if语句。

您的Dice类可能看起来像这样

\\ Dice

\\declare a private int named something like roll to hold the random value

\\constructor
    \\assign roll a random int value between 1 and 6


\\getter
    \\return the random value

这应该足以让你开始。

作为额外的好处,如果你想让程序“运行”并要求他用户提供另一组骰子并再次滚动它们 - 一遍又一遍直到你关闭程序--,你可以包装main()的主体,在你提示用户输入之前开始,有一个总是正确的while循环。这将创建一个无限循环(和嵌套循环,因此它不适用于您的解决方案)。但是,此循环将允许您的程序“运行”,直到您终止运行它的控制台。同样,如果您想将其用于自己的用途,那么如果您包含 while(true){} 循环,它将不能满足您的特定问题的要求。

我希望这一切都有帮助

Mkreegs

 类似资料:
  • 你好堆栈溢出,我有一个小问题与这个程序。我正在尝试制作一个程序来掷四个骰子并将三个最高的掷骰子加在一起,然后打印这三个掷骰子中最低的一个。我犯了一个错误,就是把三个最高的卷子加在一起,然后打印出四个卷子中最低的一个。 我如何解决这个问题?我在谷歌上搜索了很多,想知道如何使用列表和集合,但我找不到任何可以解决这个问题的东西。 此外,我如何才能迫使用户选择一个集合并重新滚动该集合? 基本上,我想做的是

  • 这是我的主要课程。重点是拿四个不同的六面模具卷,检查哪个卷是最低的,然后把三个最高的卷加在一起,同时告诉用户他们的最低卷是多少。 我遇到的主要问题是制作骰子课。 我知道我需要一个int来保存dice值,一个构造函数来实际创建随机整数,一个getter来实际将随机整数返回到主类。我该怎么做呢? 另一个问题:我如何让用户选择一个集合,然后重新滚动该集合中的最小值?我的意思是,当用户掷骰子时,三个最大的

  • 我正试图用python做一个掷骰子程序,给定用户在边、骰子和掷骰子上的输入来掷骰子。目前这段代码或多或少是有效的,但是我遇到的问题是,假设我让< code>3个骰子滚动< code>3次,骰子有< code>6个面。 我的代码显示如下: 当我需要它显示为: 这是我目前为止的代码。我的猜测是,它与我的参数和参数为空有关?我不完全确定。以下是我的代码:

  • 我编写了一个包含子类的应用程序,该子类将根据用户输入的边数掷骰子,并使用整数将掷骰子一定次数。 如:用户输入6面,想掷骰子1000次。 我还应该使用一个和我编码的数组相似的数组。 我目前拥有的: 然后,计算器将运行程序并根据程序运行的次数输出百分比,从而...所以像这样... 所需输出: 当前输出:现在我得到的都是返回的相同值,因为我现在用' for '循环所做的都是重复' sum ',不管掷骰子

  • 问题内容: 我正在尝试编写一个rollDice(int number,int nSides)方法,该方法返回滚动带有nSides边的数字骰子的总结果。 因此,例如rollDice(3,6)应该返回滚动3个六边骰子的结果(加上3到18之间的数字)。 当我输入1 来解决此问题时,下面的方法返回负数? 问题答案: 你只需要初始化和各一次,所以我已经从循环中去除它们。nextInt(int)方法选择一个从

  • 我对java非常陌生,我为自己设定了一个目标,即制作一个掷骰子程序(保持小)。最终目标是能够掷出用户选择的骰子量,并能够让每个骰子具有不同数量的面(如果需要),我让它获得骰子的数量和每个骰子的面数。这是我为它做的代码(可能真的很糟糕,如果是的话,很抱歉): 现在我想显示< code>ArrayList,但我想将其显示为 "骰子1掷出# 掷骰子2 # " 等等,我迷失了如何做到这一点,特别是对于不同