【问题标题】:how to stop a picture in a picture box from randomizing again after clicking a button again?再次单击按钮后如何阻止图片框中的图片再次随机化?
【发布时间】:2018-01-08 19:50:56
【问题描述】:

我正在为大学做二十一点作业。我有三个装着卡片的画框。我有一个抽牌按钮,最多可以抽三张牌。但每次我按下按钮时,卡片都会再次随机化。我把它设置成一次抽一张牌。我点击一张卡片,但当我点击第二张卡片时,第一张卡片再次随机化,第二张和第三张卡片相同。

代码:

int count = 0;

    private void BtnDraw_Click(object sender, EventArgs e)
    {
        int Card3;
        int Card4;
        int Card5;


        Random randomizer = new Random();

        //get random numbers
        Card3 = randomizer.Next(1, 53);
        Card4 = randomizer.Next(1, 53);
        Card5 = randomizer.Next(1, 53);

        // Display the card
        PicCard3.Image = imageList1.Images[Card3];
        PicCard4.Image = imageList1.Images[Card4];
        PicCard5.Image = imageList1.Images[Card5];

这是一次显示一张卡片的代码:

if (count == 0)
        {
            //Make PictureBox1 visible
            PicCard3.Visible = true;
            count++;


        }
        else if (count == 1)
        {
            //Make PictureBox visible
            PicCard4.Visible = true;
            count++;



        }
        else if (count == 2)
        {
            //Make PictureBox3 visible
            PicCard5.Visible = true;
            count++;
        }
        else if (count == 3)
        {
            //Hide all PictureBoxes again
            PicCard3.Visible = false;
            PicCard4.Visible = false;
            PicCard5.Visible = false;
            count = 0;
        }

【问题讨论】:

  • 虽然我犹豫是否要更新作业代码以了解具体情况...变量再次随机化,因为它在按钮单击方法中这样做。

标签: c#


【解决方案1】:

需要很少的逻辑更改:

  • 整个操作应该基于count的值
  • 无需单独的随机数
  • 随机化器不应是局部变量

简而言之,您的代码应该是这样的:

Random randomizer = new Random();
int count = 0;
private void BtnDraw_Click(object sender, EventArgs e)
{
    int randomCardIndex = randomizer.Next(0,53);
    if (count == 0)
    {
        PicCard3.Image = imageList1.Images[randomCardIndex];
        PicCard3.Visible = true;
    }
    else if (count == 1)
    {
        PicCard4.Image = imageList1.Images[randomCardIndex];
        PicCard4.Visible = true;
    }
    else if (count == 2)
    {
        PicCard5.Image = imageList1.Images[randomCardIndex];
        PicCard5.Visible = true;
    }
    else if (count == 3)
    {
        PicCard3.Visible = false;
        PicCard4.Visible = false;
        PicCard5.Visible = false;
        count = -1;
    }
    count++;
}

请注意:

如果您一次只需要显示一张卡片,请将所有其他卡片的.Visible = false; 设为匹配条件

【讨论】:

    【解决方案2】:

    尝试在加载表单而不是单击按钮时分配随机数。

    或者

    if(count == 0) {
    
    // Do randomizer for each card
    
    }
    

    是另一种方法,虽然不那么干净

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      相关资源
      最近更新 更多