2012-02-19 6 views
-3

質問:一対のダイスの回転をシミュレートするアプリケーションを作成します。ユーザーがボタンをクリックすると、アプリケーションはダイスの値を表す2つの乱数を1から6の範囲で生成する必要があります。 PictureBoxコントロールを使用してダイスを表示します。C#ダイ画像付きダイスアプリケーション

私は現在、6

までここで私がこれまでに書いたコードは、「dice2PictureBox」など、「dice1PictureBox」という名前の画像ボックスと6つの画像ボックスを持っています。私はこの時点で完全に失われています。私はプログラミングでも非常に新しいです、どんな助けも大歓迎です。前もって感謝します。

private void rollButton_Click(object sender, EventArgs e) 
    { 
     int diceOne; 
     int diceTwo; 

     Random rand = new Random(); 

     diceOne = rand.Next(3); 

     if (diceOne == 0) 
     { 
      diceOne.Visible = true; 
     } 
     else (diceOne == 1) 
     { 
      diceOne.Visible = true; 
     } 
     else (diceOne == 2) 
     { 
      diceOne.Visible = true; 
     } 

     diceTwo = rand.Next(4) + 6; 

     if (diceOne == 3) 
     { 
      diceOne.Visible = true; 
     } 
     else (diceOne == 4) 
     { 
      diceOne.Visible = true; 
     } 
     else (diceOne == 5) 
     { 
      diceOne.Visible = true; 
     } 
    } 
} 

}

+1

参考のために、* each * dieの値は1から6までです。このルートに行く場合は、合計で12の 'if'があります。また、 'int'は' Visible'プロパティを持たないので、このコードはコンパイルされません。 – cHao

+0

「diceOne == x」の大文字と小文字の区別なく、同じことが起こります。毎回別のイメージを表示する必要があります。そうでない場合は、diceOneを表示します。 – BlackVegetable

+0

ああ、それ。 :) – cHao

答えて

2

ここでは一般的な考え方を考えてみましょう。私はあなたが今何をやっているのか気にするつもりはありません、あなたが望むことをするつもりはないからです。期間。

2つのピクチャボックスが1つずつあります。次に、6つのイメージがあり、それぞれの可能な値に1つのイメージがあります。私は配列またはおそらくImageList(いずれかの方法で、それをimagesと呼ぶ)で画像を保持することをお勧めします。それは事をもっと簡単にするでしょう。

ロールすると、ダイごとにroll = rand.Next(6);のようになります。 rollは配列内のイメージのインデックスに対応します。対応するPictureBoxのImageimages[roll](またはImageListを使用している場合はimages.Images[roll])に設定します。混乱する必要はありませんVisible; 2つのPictureBoxが常に表示されます。

rollの実際の値を考慮すると、0〜5になります。人々が見たいと思う値を得るには1を加えます。

+0

ありがとう、私は間違いなく配列を試します。 – EASTON

+0

このロール[5] = dice1PictureBox1、dice2PictureBox1、dice3PictureBox1、dice4PictureBox1、dice5PictureBox1、dice6PictureBox1のようなものです。病気は正直なところ、配列に関してはあまりよくありません。 – EASTON

+0

私は "ロール"と何を宣言しますか? – EASTON

1

完全にこれは宿題のように思えるので、それをコーディングする方法を伝えることなく、いくつかのポインタが。

  • MSDN: if-else - あなたは正しくif-else文を構築していません。具体的には、if/else/elseは使用できません。
  • MSDN: Random.Next(Int32) - 最初のダイスは常に3以下の値を返します。 2番目のダイスは常に6以上の値を返します(0〜4の値に6を加算します)。これらはあなたが与える要件を満たしていません。
  • intVisibleプロパティを設定しています。ダイの価値を表す整数をイメージと混同しているようです。
+0

ありがとう、ジェレミー、私はテキストの本を見ていた、と書かれた方法は、私が正しくそれをやっているようだった。リンクはそれ以外の場合は証明されました。 – EASTON