Clicker 计数器 increase/decrease 问题

Clicker counter increase/decrease issue

我最近在我的答题器计数器上做了这个,目前当点击按钮 BR 时,它将向 BR 添加 30,向 RB 添加 10。同样,当我单击 RB 时,它会将 30 添加到 RB,将 10 添加到 BR。我现在发现的问题是,当我减少数量时,它并没有完全按照我的意愿去做。目前它的工作方式是说 BR 为 30,RB 为 10,如果我右键单击 BR,它将从 BR 中减去 30,从 RB 中减去 10,如果它在 BR 中有 10,在 RB 中有 30,我右键单击 RB将从 BR 中减去 10,从 RB 中减去 30,但是如果 BR 中的计数是 40,RB 中的计数是 40(两个按钮都单击一次)我可以右键单击任一按钮,它会减少第一个 30/10,但在剩下的那个上30, 重复右击会继续递减10

这是一张 GIF,显示计数正常(左键单击按钮) https://gyazo.com/264cc772ac2ac4d1765c92aab34221c1

这是一个显示问题的 GIF(正在右键单击按钮) https://gyazo.com/4a4484d1e78f8fa0e4e2c5c3af0a54a1

这是我使用的整数:

int BRcount = 0;
int RBcount =0;

这是使用的代码:

private void BR_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            BRcount += 30;
            RBcount += 10;
            BRT.Text = BRcount.ToString();
            RBT.Text = RBcount.ToString();
        }
        else if (e.Button == MouseButtons.Right)
        {
            if (BRcount >=30)
                BRcount -= 30;
            if(RBcount >=10 && BRcount >=30)
                RBcount -= 10;
                BRcount -= 30; //Was missing this, (copy and paste messed up, issue still present)
            BRT.Text = BRcount.ToString();
            RBT.Text = RBcount.ToString();
        }
    }
    private void RB_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            RBcount += 30;
            BRcount += 10;
            RBT.Text = RBcount.ToString();
            BRT.Text = BRcount.ToString();
        }
        else if (e.Button == MouseButtons.Right)
        {
            if (RBcount >=30 && BRcount >=10)
                RBcount -= 30;               
                BRcount -= 10;
            RBT.Text = RBcount.ToString();
            BRT.Text = BRcount.ToString();
        }

我试图让它工作的方式是可以单击任一按钮分别增加 30 + 10 并以相同的方式减少。

(请不要犹豫,提出问题以进一步解释,因为我知道它看起来可能有点混乱)

看起来您在代码的最后部分缺少一些赞誉:

else if (e.Button == MouseButtons.Right)
{
    if (RBcount >=30 && BRcount >=10)
        RBcount -= 30;               
        BRcount -= 10;
    RBT.Text = RBcount.ToString();
    BRT.Text = BRcount.ToString();
}

读起来应该是

else if (e.Button == MouseButtons.Right)
{
    if (RBcount >=30 && BRcount >=10)
    {
        RBcount -= 30;               
        BRcount -= 10;
    }
    RBT.Text = RBcount.ToString();
    BRT.Text = BRcount.ToString();
}

您的代码中似乎缺少一些括号。

你写了,

if (RBcount >= 10 && BRcount >= 30)
    RBcount -= 10;
    BRcount -= 30;

如果没有括号,则 if 语句将只执行以下行,而不管缩进。所以,它实际上会做,

if (RBcount >= 10 && BRcount >= 30)
    RBcount -= 10;
BRcount -= 30;

我想你想要的不是,

if (RBcount >= 10 && BRcount >= 30)
{
    RBcount -= 10;
    BRcount -= 30;
}

然后完整代码变成,

private void BR_MouseDown(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Left)
  {
    BRcount += 30;
    RBcount += 10;
    BRT.Text = BRcount.ToString();
    RBT.Text = RBcount.ToString();
  }
  else if (e.Button == MouseButtons.Right)
  {
    if (BRcount >= 30)
      BRcount -= 30;
    if (RBcount >= 10 && BRcount >= 30)
    {
      RBcount -= 10;
      BRcount -= 30;
    }
    BRT.Text = BRcount.ToString();
    RBT.Text = RBcount.ToString();
  }
}

private void RB_MouseDown(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Left)
  {
    RBcount += 30;
    BRcount += 10;
    RBT.Text = RBcount.ToString();
    BRT.Text = BRcount.ToString();
  }
  else if (e.Button == MouseButtons.Right)
  {
    if (RBcount >= 30 && BRcount >= 10)
    {
      RBcount -= 30;
      BRcount -= 10;
    }
    RBT.Text = RBcount.ToString();
    BRT.Text = BRcount.ToString();
  }
}