5

私はサイコロローラープログラムに取り組んでいます。ローラーがサイコロを振ったときに獲得した合計金額を示す「総獲得金額」ラベルボックスがあると想定しています。6 が出たら 600 ドル、5 が出たら 500 ドルなど。ラベル ボックスに表示されるドルの値を取得できますが、転がし続けると、代わりに次の値に置き換えられます。たとえば、合計すると 5 が出て 500 ドルを獲得し、もう一度ロールを押して 1 が出ると、600 ドル = 500 + 100 と表示されます。

使用しているコードを助けてください

 private void button1_Click(object sender, EventArgs e)
 {
     int roll1;

     Random rand = new Random();

     roll1 = rand.Next(6) + 1;
     int value = 100;


     int sum = (roll1 * value);
     totalmoneyLabel.Text = sum.ToString("c");




     if (roll1 == 1)
     {   
         diceBox1.Image = drios1_Project2.Properties.Resources._1Die;
     }

     if (roll1 == 2)
     {
         diceBox1.Image = drios1_Project2.Properties.Resources._2Die;
     }

     if (roll1 == 3)
     {
         diceBox1.Image = drios1_Project2.Properties.Resources._3Die;
     }

     if (roll1 == 4)
     {
         diceBox1.Image = drios1_Project2.Properties.Resources._4Die;
     }

     if (roll1 == 5)
     {
         diceBox1.Image = drios1_Project2.Properties.Resources._5Die;
     }

     if (roll1 == 6)
     {
         diceBox1.Image = drios1_Project2.Properties.Resources._6Die;
     }
}
4

4 に答える 4

2

累計を作成してラベルに追加する必要があります。これは、クラスレベルの変数である必要があります。これにより、各ロール中に初期化されないようになります。終了したら、ゼロにリセットできます。

public partial class Form1 : Form
{
    int roll1;
    int runningTotal;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Random rand = new Random();
        roll1 = rand.Next(6) + 1;
        int value = 100;
        int sum = (roll1 * value);
        runningTotal += sum;
        label1.Text = runningTotal.ToString("c");


    }
}
于 2012-10-30T03:40:38.987 に答える
1

それはあなたのアプリケーションが何であるかどこにも書かれていません。それは、アプリケーション、ASP.Netアプリケーション、またはその他のものを形成しますか。いずれの場合も、以前の値を取得して新しい値を追加する必要があります。

ASP.Netアプリケーションでこれを行うには、ラベルから、または$記号のない値のみが含まれているhiddenfieldから値を取得できます。ラベルから値を取得するには、コードを使用します。

        int previousValue;
        if (!int.TryParse(totalMoneyLabel.Text, out previousValue))
            previousValue = 0;

完全な例:

    private void button1_Click(object sender, EventArgs e)
    {
        const int value = 100;
        int previousValue;

        if (!int.TryParse(totalMoneyLabel.Value, NumberStyles.Integer, new CultureInfo("en-Us"), out previousValue))
            previousValue = 0;

        var rand = new Random();

        var roll1 = rand.Next(6) + 1;

        var sum = previousValue+(roll1 * value);
        totalMoneyLabel.Text = sum.ToString("c", new CultureInfo("en-Us"));
    ....
    }
于 2012-10-30T03:59:11.657 に答える
1

現状のコードで私が行うことは次のとおりです。

var rand = new Random();

int roll1 = rand.Next(6) + 1;
int value = 100;
int sum = roll1 * value;

totalmoneyLabel.Text = (int.Parse(totalmoneyLabel.Text) + sum).ToString("c");

var images = new Dictionary<int, ImageFileMachine>
{
    { 1,  drios1_Project2.Properties.Resources._1Die },
    { 2,  drios1_Project2.Properties.Resources._2Die },
    { 3,  drios1_Project2.Properties.Resources._3Die },
    { 4,  drios1_Project2.Properties.Resources._4Die },
    { 5,  drios1_Project2.Properties.Resources._5Die },
    { 6,  drios1_Project2.Properties.Resources._6Die },
};

diceBox1.Image = images[roll1];
于 2012-10-30T04:28:38.327 に答える
0

交換

int sum = (roll1 * value);

  sum = sum + (roll1 * value);
于 2012-10-30T03:39:51.400 に答える