1

サイコロプログラムを作ろうとしています。したがって、ロールをクリックすると、2 つのサイコロを振って合計を追加することになっており、それがロールした数字になります。この Windows フォーム プログラムについて助けが必要です。ここにいくつかのコードがあります:

private int totalRolls;

private void btnRoll_Click(object sender, EventArgs e)
{
    totalRolls += 1;

    System.Random Int1 = new System.Random((int)System.DateTime.Now.Ticks);
    System.Random Int2 = new System.Random((int)System.DateTime.Now.Ticks);

    int randomInteger1 = Int1.Next(1, 7);
    int randomInteger2 = Int2.Next(1, 7);

    lblNumberRolled.Text = randomInteger1.ToString() + randomInteger2.ToString();

のコードlblNumberRolled.Textは正しくないと思います。これは、両方のサイコロを合計してサイコロの最終的な合計数を取得するコードです。しかし、実行すると、30 などの大きな数字が表示されます。追加などではありません。

最大合計は 12 である必要があります。

4

3 に答える 3

4

コードを次のように変更します。

lblNumberRolled.Text = (randomInteger1 + randomInteger2).ToString();

説明:

randomInteger1.ToString() +  randomInteger2.ToString() 

randomInteger1 が 2 の場合、文字列を作成すると、"2" になります + randominterger2 が 1 の場合、文字列は "1" になります。これらの文字列を + で連結すると、「2」 + 「1」となり、3 ではなく 21 になります。

コードには別の問題があります。Ticks オブジェクトは long 型であり、int にキャストします。だから情報を失う。これにより、ほとんどの場合、両方の int に対して同じシードが得られます。これにより、ほとんどの場合、同じランダムな整数が得られます。

ランダムな呼び出しの間に Thread.Sleep(20) を配置すると、修正されます。

System.Random Int1 = new System.Random((int)System.DateTime.Now.Ticks);
Thread.Sleep(20);
System.Random Int2 = new System.Random((int)System.DateTime.Now.Ticks);
于 2013-10-24T05:38:17.013 に答える
2

これは、文字列に + を使用しているためです。文字列で「+」を使用すると、コンパイラはそれを連結演算子ではなく数学演算と見なします。

以下を試してください

それ以外の

lblNumberRolled.Text = randomInteger1.ToString() + randomInteger2.ToString();

試す

lblNumberRolled.Text = Convert.ToString(randomInteger1+randomInteger2);
于 2013-10-24T05:41:02.397 に答える
0

次のように実行できます。

Label lb = new Label();
Random random = new Random();
int ranNum1 = random.Next(1, 7); // random num 1-6
int ranNum2 = random.Next(1, 7); // random num 1-6
lb.Text = Convert.ToString(ranNum1 + ranNum2);
Form.Controls.Add(lb);

つまり、次のようなものが必要です。

Random random = new Random();
randomInteger1 = random.Next(1,7);
randomInteger2 = random.Next(1,7);
lblNumberRolled.Text = Convert.ToString(randomInteger1 +randomInteger2);
于 2013-10-24T08:35:08.227 に答える