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

这是我对你的代码所做的事情:

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 回答
1

它没有写在任何地方,您的应用程序是什么。它是窗体应用程序、ASP.Net 应用程序还是其他东西。在任何情况下,您都必须获取先前的值并为其添加新值。

要在 ASP.Net 应用程序中执行此操作,您可以从标签或隐藏字段中获取值,其中您只包含没有 $ 符号的值。要从标签使用代码中获取价值:

        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 回答
0

代替

int sum = (roll1 * value);

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