我在试着给游戏Farkle编程序。它一次最多可以掷出6个骰子。我创建了一个骰子类来保存骰子的值,并创建了一个Roll()方法来滚动骰子。
游戏将创建一个由6个骰子组成的数组,并一次掷出它们,所以我不希望Die类在类的每个实例中创建一个 Random(),否则所有骰子都会具有相同的种子随机数。所以我在应用程序的主窗体中创建了新的随机()。
我对从Die类中调用Random()而不公开应该是私有的东西之类的正确方法感到困惑。我真的很新,觉得公开所有东西会容易得多,但我想把事情做好。
我知道最好只对整个程序使用一个 Random(),那么我该如何让这个单独的类调用它呢?
模具类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Farkle
{
class Die
{
// Fields
private int _value;
// Constructor
public Die()
{
_value = 1;
}
// Value property
public int Value
{
get { return _value; }
}
// Rolls the die
public void Roll()
{
_value = MainForm.rand.Next(6) + 1;
}
}
}
主要形式:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Farkle
{
public partial class MainForm : Form
{
private Random rand = new Random(); // Should this be public? Or static?
public MainForm()
{
InitializeComponent();
}
// Create dice array
Die[] diceInHand = new Die[6];
// Roll each die
private void MainForm_Load(object sender, EventArgs e)
{
foreach (Die die in diceInHand)
die.Roll();
}
}
}
谢谢你。
您可以在 Die
类中使用私有静态
变量,静态
类只会为 MainForm
中的所有 dices 实例声明一次。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Farkle
{
class Die
{
private static Random rand = new Random(); //note this new item
// Fields
private int _value;
// Constructor
public Die()
{
_value = 1;
}
// Value property
public int Value
{
get { return _value; }
}
// Rolls the die
public void Roll()
{
_value = rand.Next(6) + 1; //no need to refer to the mainForm
}
}
}
一个简单的新手问题,奇怪的是我一直没能找到解决方法。
我对编程有点陌生,我想知道如何编写一个随机掷骰子的java程序。这方面的要求是: 私有成员: -final int numSides ^^die的边数 -public方法 ^^骰子(int sides) @@@将numSides设置为sides参数。 @@@用于创建具有不同边数的骰子,例如,在main中可以说骰子d6=新骰子(6)以创建六边die。 ^^int roll() ^^返回一个从1到包括
我试图编写一个方法rollDice(int number,int nSides),它返回用nSides边滚动数字骰子的总结果。
有人能在这里给我指个正确的方向吗?我的游戏工作完美,但我想添加一些实际的互动/目标。谢谢
问题内容: 我有一个生成事实的简单应用。我想合并一个生成随机事实而不是递减的函数。 我的数组看起来像这样。 问题答案: 使用随机类。该类有一个方法,(doc)和引号: 返回一个伪随机数,它从此随机数生成器的序列中提取,在0(含)和指定值(不含)之间均匀分布的int值。nextInt的一般约定是伪随机生成并返回指定范围内的一个int值。所有n个可能的int值均以(近似)相等的概率产生。 因此,您需要
问题内容: 我正在尝试编写一个rollDice(int number,int nSides)方法,该方法返回滚动带有nSides边的数字骰子的总结果。 因此,例如rollDice(3,6)应该返回滚动3个六边骰子的结果(加上3到18之间的数字)。 当我输入1 来解决此问题时,下面的方法返回负数? 问题答案: 你只需要初始化和各一次,所以我已经从循环中去除它们。nextInt(int)方法选择一个从