-2

解決方法がわからない問題が 2 つあります。

diceThrow()サイコロをランダムに振って 1 ~ 6 の答えを複数回出すことになっていますが、1 ~ 6 の答えは 1 つだけで、それを行うだけです。すなわち (6、6、6、6、6、6 など)

と については、「 」またはのrollDice()定義が不十分なだけかどうかはわかりませんが、 の場合、プログラムを終了してリセットする必要があります。imaxRollsi > maxRolls

これらのいずれかを修正する方法についてのアドバイスは大歓迎です、ありがとう!

//somewhere else in code
    int maxRolls = RollsNumber();
    int throwresult = diceThrow();
    int i;
//*******************************

    private void rollButton_Click(object sender, EventArgs e)
    {
        rollDice();
        wagerTextBox.Text = null;
        wagerTextBox.Text = scoreTextBox.Text;
        diceThrow();

        MessageBox.Show(Convert.ToString(throwresult));

        if (maxRolls < i)
        {
            MessageBox.Show("You got too greedy.");

           //reset the form

        }
    }
    // Decides the maximum number of rolls before the player loses
    static public int RollsNumber()
     {
        Random rolls = new Random();
        return rolls.Next(1, 10);

    }
    // Throws the dice
    static public int diceThrow()
    {
        Random dice = new Random();
       return dice.Next(1, 7);
    }
    private void rollDice()
    {
        for (i = 0; i <= maxRolls; i++)
        {

                int wager = Convert.ToInt32(wagerTextBox.Text);


                int score = wager * 100;


                scoreTextBox.Text = Convert.ToString(score);



        }  
    }

} }

4

1 に答える 1

0

Random と同じシードを使用しています。

msdnがランダムクラスで述べているように

乱数の生成はシード値から始まります。同じシードを繰り返し使用すると、同じ一連の数値が生成されます。異なるシーケンスを作成する 1 つの方法は、シード値を時間依存にすることです。これにより、Random の新しいインスタンスごとに異なるシリーズが作成されます。

あなたの場合の簡単な方法は、毎回新しいランダムを作成しないことです。

 // Throws the dice
static Random diceRandom = new Random();
static public int diceThrow()
{
   return diceRandom .Next(1, 7);
}
于 2012-11-01T01:36:14.370 に答える